【学会动态规划】不同路径(5)

简介: 【学会动态规划】不同路径(5)

动态规划怎么学?

学习一个算法没有捷径,更何况是学习动态规划,


跟我一起刷动态规划算法题,一起学会动态规划!


1. 题目解析

题目链接:62. 不同路径 - 力扣(Leetcode)



题目的要求也很容易理解,


机器人只能往右或者往下走,


求从起点走到终点有多少种情况。


2. 算法原理

1. 状态表示

那么 dp[ i ][ j ] 表示什么呢?


dp[ i ][ j ] 就表示走到 [ i,j ] 位置的时候,一共有多少种方式。


2. 状态转移方程

根据最近的一步划分问题,因为机器人只会往右和往下走,


那么dp[ i ][ j ] 就等于从上来的方法数 + 从左边来的方法数


所以 dp[ i ][ j ] = dp[ i - 1 ][ j ] + dp[ i ][ j - 1 ]


3. 初始化

因为第一行和第一列没有上面和左边的数,


所以第一行和第一列的方法数都是1,所以我们直接初始化成1,


然后从dp[ 1 ][ 1 ]开始遍历。


4. 填表顺序

直接从左往右,从上往下即可。


5. 返回值

返回题目要求的终点位置即可:dp[ m - 1 ][ n - 1 ]。


3. 代码编写

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

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。


如果感到有所收获的话可以给博主点一个赞哦。


如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~


相关文章
|
5天前
|
算法
算法修炼-动态规划之路径问题(1)
算法修炼-动态规划之路径问题(1)
|
5天前
|
机器人 索引
leetcode-62:不同路径
leetcode-62:不同路径
19 0
|
5天前
|
机器人 Java
leetcode-63:不同路径 II
leetcode-63:不同路径 II
17 0
|
5天前
|
算法
【动态规划】路径问题(下)
【动态规划】路径问题
7 0
【动态规划】路径问题(下)
|
5天前
|
算法
【动态规划】路径问题(上)
【动态规划】路径问题
7 0
|
5天前
|
算法 机器人 BI
动态规划|【路径问题】|62.不同路径I
动态规划|【路径问题】|62.不同路径I
|
5天前
|
机器人
动态规划|【路径问题】63.不同路径II
动态规划|【路径问题】63.不同路径II
|
7月前
|
算法
【学会动态规划】不同路径 II(6)
【学会动态规划】不同路径 II(6)
28 0
|
7月前
蓝桥杯必备——动态规划“路径问题”以及这种题的小结(二)
蓝桥杯必备——动态规划“路径问题”以及这种题的小结