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

这篇具有很好参考价值的文章主要介绍了【学会动态规划】不同路径 II(6)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

动态规划怎么学?

1. 题目解析

2. 算法原理

1. 状态表示

2. 状态转移方程

3. 初始化

4. 填表顺序

5. 返回值

3. 代码编写

写在最后:


动态规划怎么学?

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

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

1. 题目解析

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

【学会动态规划】不同路径 II(6),学会动态规划,动态规划,算法

 这道题目也不难理解,相比之前的不同路径,

这道题添加了障碍物,题目给了我们一个二维的矩阵,

通过示例我们可以得知:

没有障碍物的位置就是初始化成0,有障碍物的位置就是1

而有障碍物的位置不能走,然后还是求路径数量。

2. 算法原理

1. 状态表示

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

2. 状态转移方程

如果是没有障碍物的,我们就让:

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

如果有障碍,就让dp[ i ][ j ]  = 0 表示这种路径不存在。

3. 初始化

我们多加一行和一列的虚拟节点,防止出现越界的情况,

把它们初始化成0,但是要保证第一个节点初始化成1.

4. 填表顺序

从左往右,从上往下。

5. 返回值

dp[ m ][ n ] ,终点作为返回值。

3. 代码编写

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m = obstacleGrid.size(), n = obstacleGrid[0].size();
        vector<vector<int>> dp(m + 1, vector<int>(n + 1));
        dp[0][1] = 1;
        for(int i = 1; i <= m; i++) {
            for(int j = 1; j <= n; j++) {
                if(obstacleGrid[i - 1][j - 1] == 1) continue;
                else dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
            }
        }
        return dp[m][n];
    }
};

写在最后:

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

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

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~文章来源地址https://www.toymoban.com/news/detail-609395.html

到了这里,关于【学会动态规划】不同路径 II(6)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 动态规划——不同路径II

    63. 不同路径 II - 力扣(LeetCode)​编辑https://leetcode.cn/problems/unique-paths-ii/description/ https://leetcode.cn/problems/unique-paths-ii/description/ 问题描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达

    2024年01月16日
    浏览(46)
  • 【学会动态规划】不同路径(5)

    目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划! 题目链接:62. 不同路径 - 力扣(Leetcod

    2024年02月16日
    浏览(28)
  • 力扣:63. 不同路径 II(动态规划)

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

    2024年01月18日
    浏览(53)
  • 随想录Day39--动态规划: 62.不同路径 , 63. 不同路径 II

    今天的路劲问题,思想和昨天的爬楼梯一样,主要还是找到你这个位置是怎么来的,到达dp[i][j]的方法由到达dp[i - 1][j]的方法再加上到达dp[i][j - 1]的方法和。在初始化时,当i=0或者j=0时,到达他们的只有一条路劲,就是直走,所以对它进行初始化。 63. 不同路径 II 加了一个障

    2024年02月03日
    浏览(59)
  • LeetCode刷题笔记【30】:动态规划专题-2(不同路径、不同路径 II)

    参考前文 参考文章: LeetCode刷题笔记【29】:动态规划专题-1(斐波那契数、爬楼梯、使用最小花费爬楼梯) LeetCode链接:https://leetcode.cn/problems/unique-paths/description/ 动态规划 : 创建m×n的数组, 对应这个地图, 数组 val 表示 有几种方法可以走到这一格 最开始, 第一行和第一列v

    2024年02月09日
    浏览(60)
  • leetcode63. 不同路径 II(动态规划-java)

    来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/unique-paths-ii 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。

    2024年02月11日
    浏览(50)
  • 我在代码随想录|写代码Day33 | 动态规划| 路径问题| 62.不同路径,63. 不同路径 II,343. 整数拆分

    🔥博客介绍`: 27dCnc 🎥系列专栏: 数据结构与算法 算法入门 C++项目 🎥 当前专栏: 算法入门 专题 : 数据结构帮助小白快速入门算法 👍👍👍👍👍👍👍👍👍👍👍👍 ☆*: .。. o(≧▽≦)o .。.:*☆ ❤️感谢大家点赞👍收藏⭐评论✍️ 今日学习打卡 代码随想录 - 动态规划

    2024年03月11日
    浏览(63)
  • 算法day39|动态规划:不同路径Ⅰ、Ⅱ

    https://leetcode.cn/problems/unique-paths/ 了解下标含义——这里是行列数 理解为什么dfs不能做这道题(超时) https://leetcode.cn/problems/unique-paths-ii/ 初始化时也应该注意限制条件 注意特殊情况的判断

    2024年02月06日
    浏览(49)
  • 【算法|动态规划No.6】leetcode63. 不同路径Ⅱ

    个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助 🍓希望我们一起努力、成长,共同进步。

    2024年02月16日
    浏览(49)
  • 【算法|动态规划系列No.5】leetcode62. 不同路径

    个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助 🍓希望我们一起努力、成长,共同进步。

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包