这题很明显可以用动态规划来解决:
1.设f[i][j]为走到(i,j)位置上的方法数;
2.到达(i,j)位置只可能从(i-1,j)或(i,j-1)走过来的,则可以得到通式f[i][j] = f[i-1][j] + f[i][j-1];
3.注意边界情况:在第一行和第一列上的格子只有一种方法到达,向下或者想右故f[0][j] = 1;f[i][0]=1
public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n = sc.nextInt()+1; int m = sc.nextInt()+1; int[][] f = new int[n][m]; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ if(i==0 || j==0) f[i][j] = 1; else{ f[i][j] = f[i-1][j] + f[i][j-1]; } } } System.out.println(f[n-1][m-1]); } } }