不同路径[动态规划]Day-11

不同路径[动态规划]

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

不同路径[动态规划]Day-11_第1张图片

  • 取自力扣
    示例 1:

输入:m = 3, n = 7
输出:28

示例 2:

输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。

  1. 向右 -> 向下 -> 向下
  2. 向下 -> 向下 -> 向右
  3. 向下 -> 向右 -> 向下

示例 3:

输入:m = 7, n = 3
输出:28

示例 4:

输入:m = 3, n = 3
输出:6

题解

class Solution {
    public int uniquePaths(int m, int n) {
        //定义二维数组
        int[][] res = new int[m][n];
         //让第一行为1
        for(int i = 0; i < m; ++i){
            res[i][0] = 1;
        }
        //让第一竖行都为1
         for(int j = 0; j < n; ++j){
            res[0][j] = 1;
        }
        //计算
        for(int i = 1; i < m; ++i){
            for(int j = 1; j < n; ++j){
                //该格的上面一格加上左边的一行
                res[i][j] = res[i - 1][j] + res[i][j - 1];
            }
        }
        //
        return res[m - 1][n - 1];
    }
}

你可能感兴趣的:(算法top100,动态规划,算法,图论)