62. 不同路径

✅做题思路or感想

乍一看是一道图论题(实际上也可以用图论),但是可以用动态规划来解的题。

dp数组的含义

  • 求什么就设什么。dp[i][j]是到达坐标(i, j)不同路径数

递推公式

  • 到达(i, j)的路径可以是从(i - 1, j)来,也可以是从(i, j - 1)来,题目求的是方法数,故这里就直接二者相加就好了。dp[i][j] = dp[i - 1][j] + dp[i][j - 1];

初始化

  • 这一题的坑点在于初始化。最上面一整行和最左边一整列的路径数都是1(因为只能无脑往左或者无脑往下),所以这里初始化要初始化最上面一行和最左边一列为1

遍历顺序

  • 因为从递推公式知道,后来的值是由前面的值推出,故从小到大
class Solution {
public:
    int uniquePaths(int m, int n) {
        int dp[150][150];
        //初始化
        for (int i = 0; i < n; i++) {
            dp[i][0] = 1;
        }
        for (int j = 0; j < m; j++) {
            dp[0][j] = 1;
        }
        //注意这里是i = 1, j = 1开始
        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];
    }
};
posted @   北原春希  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示