思想
f[i][j]表示传i次球,传到j号同学手里的方案数。f[0][0]=1因为小蛮没传,所以肯定还在小蛮同学这里。这里有一个技巧,因为同学站成了一个环。所以(j-1+n)%n可以代表j号同学左边的同学,(j+1)%n可以代表j号同学右边的同学。
代码
import java.io.*;
public class Main {
static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
static int N = 35;
static int[][] f = new int[N][N]; //f[i][j]表示传i次传到j号同学的方法数
public static void main(String[] args)throws IOException{
int n = nextInt(), m = nextInt();
f[0][0] = 1;
for(int i=1; i<=m; i++){
for(int j=0; j<n; j++){
f[i][j] = f[i-1][(j+1)%n] + f[i-1][(j-1+n)%n];
}
}
out.println(f[m][0]);
out.flush();
out.close();
}
public static int nextInt()throws IOException{
in.nextToken();
return (int)in.nval;
}
}