这题很明显可以用动态规划来解决:
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]);
        }
    }
}