首页 > 其他分享 >05_不同路径2(带障碍物版)

05_不同路径2(带障碍物版)

时间:2024-05-25 11:08:43浏览次数:22  
标签:障碍物 obstacleGrid 05 int 路径 ++ && 障碍 dp

63. 不同路径 II

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 10 来表示。

image-20240525102817297

【思路】

动规五部曲:

1、确定dp数组以及下标的含义

dp[i][j]:表示从(0,0)出发,到(i,j)有dp[i][j]条不同的路径。

2、确定递推公式

递推公式和上面那题一样,dp[i][j] = dp[i-1][j]+dp[i][j-1]。

但这里需要注意的是,因为有了障碍的话应该就保持初始状态(初始状态为0)。

if (obstacleGrid[i][j] == 0) {//当(i, j)没有障碍的时候,再推导dp[i][j]
	dp[i][j] = dp[i-1][j] + dp[i][j-1];
}

3、dp数组如何初始化

int[][] dp = new int[m][n];
for(int i = 0; i < m && obstacleGrid[i][0] == 0; i++) dp[i][0] = 1;
for(int j = 0; j < n && obstacleGrid[0][j] == 0; j++) dp[0][j] = 1;

因为从(0,0)的位置到(i,0)的路径只有一条,所以dp[i][0]一定为1,dp[0][j]也同理。

但如果(i, 0)这条边有了障碍之后,障碍之后(包括障碍)都是走不到的位置了,所以障碍之后的dp[i][0]应该还是初始值0。

注意代码里for循环的终止条件,一旦遇到obstacleGrid[i][0] == 1的情况就停止dp[i][0]的赋值1的操作,dp[0][j]同理

4、确定遍历顺序

从递归公式dp[i][j]=dp[i-1][j]+dp[i][j-1]中可以看出,一定是从左到右一层一层遍历,这样保证推导dp[i][j]的时候,dp[i-1][j]和dp[i][j-1]一定有数值。

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

5、举例推导dp数组

class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        int m = obstacleGrid.length;
        int n = obstacleGrid[0].length;
        int[][] dp = new int[m][n];

        //如果在起点或终点出现了障碍,直接返回0
        if (obstacleGrid[m - 1][n - 1] == 1 || obstacleGrid[0][0] == 1) {
            return 0;
        }

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

        for (int i = 1; i < m; i++) {
            for (int j = 1; j < n; j++) {
                dp[i][j] = (obstacleGrid[i][j] == 0) ? dp[i - 1][j] + dp[i][j - 1] : 0;
            }
        }
        return dp[m - 1][n - 1];
    }
}

标签:障碍物,obstacleGrid,05,int,路径,++,&&,障碍,dp
From: https://www.cnblogs.com/codingbao/p/18212177

相关文章

  • 2024/05/25
    低手谈获利,技术位,怎么才能赚大钱,盈利,分析主力意图,捕捉战机,涨跌原因,预测,仓位常重,永不满足/欲壑难平高手谈风控, 仓位, 怎么才能不大亏,回撤,审视自我行为,等待战机,涨跌应对,对策,仓位常轻,知足不辱/知止不殆技术的最大秘诀是知道什么时候不适用技术,最顶级的交易就是懂得空仓不交易认......
  • 04_不同路径
    62.不同路径一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?输入:m=3,n=7输出:28示例2:输入:m=2,n=3输出:3......
  • CMU 15-445 Lecture #05: Storage Models & Compression笔记总结(上)
    这是cmu15-445第五节课程StorageModels&Compression的上半部分,主要包括StorageModels的内容,压缩部分下次再整理,学完这部分可以去做hw2的第一部分课程主页:CMU15-445/645::IntrotoDatabaseSystems(Fall2023)(有几张图片目前没上传,过两天补一下)DatabaseWorkloads......
  • 代码随想录算法训练营第第17天 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子
    三道题都没想出来,还是要加强递归的练习110.平衡二叉树(优先掌握递归)再一次涉及到,什么是高度,什么是深度,可以巩固一下。题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.平衡二叉树.htmlfunctiongetHeight(node){if(node===null)return0;letleftH......
  • 【智能算法应用】白鲸优化算法求解二维路径规划问题
    目录1.算法原理2.路径规划数学模型3.结果展示4.参考文献5.代码获取1.算法原理【智能算法】白鲸优化算法(BWO)原理及实现2.路径规划数学模型优化目标路径规划问题需要考虑三点:全局总路径最优避免碰撞到障碍物路径平滑性全局总路径最优考虑路径规划问题的全局最......
  • 日常总结(10):2024年05月24日
    日常总结几天没总结了,最近考了几次试。05.0960ptsrk505.1145ptsrk5T1没开longlong同时100pts05.14200ptsrk3最后一题暴力写挂少20pts痛失rk105.1672ptsrk6这一场非常的拉,前两题思路都挂掉05.18220ptsrk3第一题没转double失40pts痛失rk105.21300ptsr......
  • 今日刷三题(day13):ISBN号码+kotori和迷宫+矩阵最长递增路径
    题目一:ISBN号码题目描述:每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语......
  • 全国产化服务器设计原理图:905-多路PCIe的阵列计算全国产化服务器
    多路PCIe的阵列计算全国产化服务器      多路PCIe的阵列计算全国产化服务器以国产化处理器(海光、飞腾ARM、算能RSICV)为主板,扩展6-8路PCIe3.0X4计算卡;计算卡为全国产化的AI处理卡(瑞星微ARM,算能AI,灵犀类脑计算),低功耗FPGAPCIe计算卡;同时扩展万兆以太......
  • SpringBoot中设置静态资源映射路径
    这里写目录标题一、系统默认静态资源路径二、静态资源不在默认目录,需要配置1.方法一:通过配置类设置(java代码实现)2.方法二:application.yml配置3.方法三:application.properties配置一、系统默认静态资源路径默认情况下,SpringBoot会从以下位置自动serve静态资源:c......
  • KubeSphere 社区双周报|2024.05.09-05.23
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2024.05.09-05.23。贡献者名单新晋KubeSpherecontribu......