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

目录

动态规划怎么学?

1. 题目解析

2. 算法原理

1. 状态表示

2. 状态转移方程

3. 初始化

4. 填表顺序

5. 返回值

3. 代码编写

写在最后:


动态规划怎么学?

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

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

1. 题目解析

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

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

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

通过示例我们可以得知:

没有障碍物的位置就是初始化成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];}
};

写在最后:

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27552.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法提高-动态规划-背包问题

背包问题 01背包AcWing 423. 采药AcWing 1024. 装箱问题AcWing 1022. 宠物小精灵之收服AcWing 278. 数字组合AcWing 1023. 买书AcWing 426. 开心的金明 完全背包AcWing 1021. 货币系统AcWing 532. 货币系统 多重背包AcWing 1019. 庆功会单调队列优化AcWing 6. 多重背包问题 III…

Kubernetes - HPA-VPA - metrics介绍和安装 - HPA实验

目录 参考文章&#xff1a;(97条消息) Kubernetes-自动扩展器HPA、VPA、CA_hpa vpa_SRE运维充电站的博客-CSDN博客 HPA VPA 官方网址&#xff1a;autoscaler/vertical-pod-autoscaler at master kubernetes/autoscaler GitHub HPA和VPA进行扩缩容的区别&#xff1a; me…

【JavaEE】HTTP请求的构造

目录 1、通过form表单构造HTTP请求 2、通过JS的ajax构造HTTP请求 3、Postman的安装和简单使用 常见的构造HTTP请求的方式有一下几种&#xff1a; 直接通过浏览器的地址栏&#xff0c;输入一个URL&#xff0c;就可以构造一个GET请求HTML中的一些特殊标签&#xff0c;也会触发…

使用Python和Scrapy实现抓取网站数据

Scrapy是一个功能强大的网络爬虫框架&#xff0c;允许开发者轻松地抓取和解析网站内容&#xff0c;这篇文章主要为大家介绍了如何使用Python的Scrapy库进行网站数据抓取&#xff0c;需要的可以参考一下 在本文中&#xff0c;我们将介绍如何使用Python的Scrapy库进行网站数据抓…

ORA-27086: unable to lock file - already in use

数据库设计的定时任务&#xff0c;逻辑导出出现报错&#xff0c;ORA-27086: unable to lock file - already in use 检查文件目录权限&#xff0c;磁盘空间和定时脚本均没有发现异常 检查无果后在网上找到原因应该在于NFS自动挂载上没有nolock属性 先 umount /bak 修改/et…

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite

BTP Integration Suite学习笔记 - (Unit1) Developing with SAP Integration Suite BTP Integration Suite学习笔记 - (Unit2) Developing with SAP Integration Suite 带着一个问题去学&#xff1a;明明可以直接访问一个后端系统的OData服务&#xff0c;为什么还要再多绕一道C…

Servlet 生命周期

文章目录 Servlet 生命周期主要有三个方法● 示意图● 初始化阶段● 处理浏览器请求阶段(service 方法)● 终止阶段 destory 方法(体现 Servlet 完整的生命周期)● 代码演示 Servlet 生命周期 主要有三个方法 ​ 1. init()初始化阶段 ​ 2. service()处理浏览器请求阶段 ​…

文心一言 VS 讯飞星火 VS chatgpt (60)-- 算法导论6.4 4题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;60&#xff09;-- 算法导论6.4 4题 四、证明&#xff1a;在最坏情况下&#xff0c;HEAPSORT 的时间复杂度是Ω (nlgn)。 文心一言&#xff1a; 要证明在最坏情况下&#xff0c;HEAPSORT 的时间复杂度是 Ω(n log n)&#xff0c…

DKN和KGC阅读

1. DKN 作者将外部知识图包含的知识融入新闻嵌入。 &#xff08;1&#xff09;将新闻标题单词词嵌入&#xff0c;单词链接的实体嵌入&#xff0c;以及实体的上下文嵌入(邻居实体嵌入的平均)建模为CNN输入的三个通道。 &#xff08;2&#xff09;然后使用KCNN模型&#xff0c…

大数据第一步-Mac安装Hadoop3

1.安装工作 1.1 准备工作 前提是把jJDK8安装好&#xff0c;hadoop3.x最低需要jdk8。 然后打开共享把远程登陆打开&#xff0c;不打开说是后面会报错&#xff0c; 到终端输入命令&#xff1a;ssh localhost 生成新的keygen否则后面会报错 Permission denied 命令&#xff1a;…

数学建模-拟合算法

这里的线性函数指的是参数为线性&#xff0c;而不是变量为线性。 yabx^2是线性的 用的比较多的是多项式拟合和自己定义的 拓展资料&#xff1a;工具箱曲线拟合类型评价解释 文件-导出代码 自动生成的代码修改图名和标签 如果不收敛&#xff0c;自己要修改初始值&#xf…

Python(Conda)环境迁移(从win10到macos12.5)笔记

文章目录 背景环境 1、通过conda迁移2、通过python迁移3、最后&#xff08;逐一安装&#xff09; 背景环境 win10是以前安装的conda和py。目前需要导出的环境的版本为py3.10.4。macos是重新安装的conda&#xff0c;目前有的环境是py3.11.4。我是先进conda用刚安装好的base创建…