不同的路径****

描述

有一个机器人的位于一个 m × n 个网格左上角。

机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。

问有多少条不同的路径?

样例

给出 m = 3 和 n = 3, 返回 6.
给出 m = 4 和 n = 5, 返回 35.

start    
     
    end

分析:

1.由于每一时刻只能向下或者向右移动。所以第一列每个点的所有路径都是只由它前一个点从上方向下传过来的也就是只有一条路径。同理第一行每个点的路径是由它左边的点传过来的只有一条路径,所以先把这两部分的时刻点都指定值1.

2.除去这些点之外其余的点都是由上方或者左边传递过来的,所以其余的点就等于上方点的值和左方点的值的和。

public class Solution {
    /**
     * @param m: positive integer (1 <= m <= 100)
     * @param n: positive integer (1 <= n <= 100)
     * @return: An integer
     */
    public int uniquePaths(int m, int n) {
        if(n==0||m==0){
            return 0;
        }
        int sum[][] = new int[m][n];
        for(int i=1;i<m;i++){
            sum[i][0] = 1;
        }
        for(int j=1;j<n;j++){
            sum[0][j] = 1;
        }
        for(int a=1;a<m;a++){
            for(int b=1;b<n;b++){
                sum[a][b] = sum[a][b-1] + sum[a-1][b];
            }
        
         }
        return sum[m-1][n-1];
}
}

猜你喜欢

转载自blog.csdn.net/javaisnotgood/article/details/81296675