LeetCode-62. 不同路径

题目描述 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?



例如:上图是一个7*3的网格。有多少可能的路径?

解题思路

这题是简单的动态规划题。

  • DP定义:记dp[i][j]为机器人到达[i][j]位置的可能路径数量;
  • DP初始化:dp[i][0] = dp[0][j] = 1,因为只能向右和向下,故第一列和第一行的位置只有一条路径;
  • DP更新:dp[i][j] = dp[i-1][j] + dp[i][j-1];
  • 不要忘记最后返回dp[n-1][m-1]哦,因为矩阵下标从0开始的呀!

代码

class Solution {
    public:
    int uniquePaths(int m, int n) {
        vector<vector<int>> dp(n+1, vector<int>(m+1,0));
        for(int i=0;i<m;i++){
            dp[0][i] = 1;
        }
        for(int i=0;i<n;i++){
            dp[i][0] = 1;
        }
        cout << dp[0][2];

        for(int i=1;i<n;i++){
            for(int j=1;j<m;j++){
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }

        return dp[n-1][m-1];
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容