当前位置: 首页 > news >正文

网站设计制作电话多少河南新闻头条最新消息

网站设计制作电话多少,河南新闻头条最新消息,网站建设的需要分析,球队排名榜实时排名不同路径 II 题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。…

不同路径 II

题目描述

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

示例 1:

在这里插入图片描述
输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
输出:2
解释:3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:

  • 向右 -> 向右 -> 向下 -> 向下
  • 向下 -> 向下 -> 向右 -> 向右

示例 2:

在这里插入图片描述
输入:obstacleGrid = [[0,1],[0,0]]
输出:1

提示:

  • m == obstacleGrid.length
  • n == obstacleGrid[i].length
  • 1 <= m, n <= 100
  • obstacleGrid[i][j] 为 0 或 1

动规五部曲:

  1. 确定dp数组(dp table)以及下标的含义
    dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。
  2. 确定递推公式
    递推公式和62.不同路径⼀样,dp[i][j] = dp[i - 1][j] + dp[i][j - 1]。
    但这⾥需要注意⼀点,因为有了障碍,(i, j)如果就是障碍的话应该就保持初始状态(初始状态为0)。
    所以代码为:
if (obstacleGrid[i][j] == 0) { // 当(i, j)没有障碍的时候,再推导dp[i][j]dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
  1. dp数组如何初始化
    在不同路径不同路径中我们给出如下的初始化:
vector<vector<int>> dp(m, vector<int>(n, 0)); // 初始值为0
for (int i = 0; i < m; i++) dp[i][0] = 1;
for (int j = 0; j < n; j++) dp[0][j] = 1;

因为从(0, 0)的位置到(i, 0)的路径只有⼀条,所以dp[i][0]⼀定为1,dp[0][j]也同理。
但如果(i, 0) 这条边有了障碍之后,障碍之后(包括障碍)都是⾛不到的位置了,所以障碍之后的dp[i][0]应该还是
初始值0。
如图:
在这里插入图片描述
下标(0, j)的初始化情况同理。
所以本题初始化代码为:

vector<vector<int>> dp(m, vector<int>(n, 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循环的终⽌条件,⼀旦遇到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];}
}
  1. 举例推导dp数组
    拿示例1来举例如题:
    在这里插入图片描述
    对应的dp table 如图:
    在这里插入图片描述
    如果这个图看不懂,建议再理解⼀下递归公式,然后照着⽂章中说的遍历顺序,⾃⼰推导⼀下!

力扣提交代码

c++

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m = obstacleGrid.size();int n = obstacleGrid[0].size();if (obstacleGrid[m - 1][n - 1] == 1 || obstacleGrid[0][0] == 1) //如果在起点或终点出现了障碍,直接返回0return 0;vector<vector<int>> dp(m, vector<int>(n, 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++) {if (obstacleGrid[i][j] == 1) continue;dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m - 1][n - 1];}
};

c语言

int uniquePathsWithObstacles(int** obstacleGrid, int obstacleGridSize, int* obstacleGridColSize) 
{int n=obstacleGridSize;// 定义障碍物网格行数int m=obstacleGridColSize[0];// 定义障碍物网格列数//如果在起点或终点出现了障碍,直接返回0if(obstacleGrid[0][0]==1||obstacleGrid[n-1][m-1]==1)    return 0;int i,j;int dp[110][110]={0};//所有元素先初始化为0//初始化dp数组for(i=0;i<n&&obstacleGrid[i][0]==0;i++) dp[i][0]=1;//第一行如果遇到障碍物,则后面为0for(j=0;j<m&&obstacleGrid[0][j]==0;j++) dp[0][j]=1;//第一列如果遇到障碍物,则后面为0for(i=1;i<n;i++){for(j=1;j<m;j++){if(obstacleGrid[i][j]==1)   continue;//遇到障碍物就跳过继续dp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[n-1][m-1];
}

文章转载自:
http://dinncoexcimer.zfyr.cn
http://dinncoadmonishment.zfyr.cn
http://dinncoaerography.zfyr.cn
http://dinncoclover.zfyr.cn
http://dinncodanthonia.zfyr.cn
http://dinncocappie.zfyr.cn
http://dinncopontic.zfyr.cn
http://dinncoequitableness.zfyr.cn
http://dinncoandiron.zfyr.cn
http://dinncoantimilitarism.zfyr.cn
http://dinncoantimonate.zfyr.cn
http://dinncoquilldriver.zfyr.cn
http://dinncorectocele.zfyr.cn
http://dinncopirimicarb.zfyr.cn
http://dinncorevengefully.zfyr.cn
http://dinncoeib.zfyr.cn
http://dinncomolehill.zfyr.cn
http://dinncoadjoin.zfyr.cn
http://dinncotricolor.zfyr.cn
http://dinncodrive.zfyr.cn
http://dinncoremodify.zfyr.cn
http://dinncoflannelled.zfyr.cn
http://dinncowanion.zfyr.cn
http://dinncowistfully.zfyr.cn
http://dinncoversailles.zfyr.cn
http://dinncopanel.zfyr.cn
http://dinncoropewalking.zfyr.cn
http://dinncokart.zfyr.cn
http://dinncolichenometrical.zfyr.cn
http://dinncoagrochemical.zfyr.cn
http://dinncocycadophyte.zfyr.cn
http://dinncodustheap.zfyr.cn
http://dinncolapsible.zfyr.cn
http://dinncobasipetally.zfyr.cn
http://dinncorowton.zfyr.cn
http://dinncocommotion.zfyr.cn
http://dinncowirehair.zfyr.cn
http://dinncocatechin.zfyr.cn
http://dinncoqueerish.zfyr.cn
http://dinncolamp.zfyr.cn
http://dinncoravenous.zfyr.cn
http://dinncokeynote.zfyr.cn
http://dinncothoreau.zfyr.cn
http://dinncosemitransparent.zfyr.cn
http://dinncomiracle.zfyr.cn
http://dinncomulticell.zfyr.cn
http://dinncointerfoliaceous.zfyr.cn
http://dinncotranscriptor.zfyr.cn
http://dinncocanakin.zfyr.cn
http://dinncovariform.zfyr.cn
http://dinncoisoparametric.zfyr.cn
http://dinncocolidar.zfyr.cn
http://dinncocragged.zfyr.cn
http://dinncozanzibar.zfyr.cn
http://dinncosquarebash.zfyr.cn
http://dinncomarruecos.zfyr.cn
http://dinncoapoapsis.zfyr.cn
http://dinncomuddily.zfyr.cn
http://dinncodialectologist.zfyr.cn
http://dinncoserver.zfyr.cn
http://dinncoscrivener.zfyr.cn
http://dinncobasseterre.zfyr.cn
http://dinncoovercontain.zfyr.cn
http://dinncobloviate.zfyr.cn
http://dinncoagnosia.zfyr.cn
http://dinncolobulation.zfyr.cn
http://dinncoexpansibility.zfyr.cn
http://dinncoquarantinable.zfyr.cn
http://dinncomirabilia.zfyr.cn
http://dinncococobolo.zfyr.cn
http://dinncoeuhemeristically.zfyr.cn
http://dinncorhabdomere.zfyr.cn
http://dinncodabbler.zfyr.cn
http://dinncofavored.zfyr.cn
http://dinncogunyah.zfyr.cn
http://dinncosaurischian.zfyr.cn
http://dinncostrawberry.zfyr.cn
http://dinnconyasa.zfyr.cn
http://dinncodoorstop.zfyr.cn
http://dinncocagliari.zfyr.cn
http://dinncowheedle.zfyr.cn
http://dinncoslipup.zfyr.cn
http://dinncofagoting.zfyr.cn
http://dinncouniliteral.zfyr.cn
http://dinncoburrhead.zfyr.cn
http://dinncotuff.zfyr.cn
http://dinncoratiocination.zfyr.cn
http://dinncotonsorial.zfyr.cn
http://dinncorelating.zfyr.cn
http://dinncosemitone.zfyr.cn
http://dinncokookaburra.zfyr.cn
http://dinncopantagruelian.zfyr.cn
http://dinncoframed.zfyr.cn
http://dinncodeindustrialize.zfyr.cn
http://dinncolacelike.zfyr.cn
http://dinncocalk.zfyr.cn
http://dinnconullifier.zfyr.cn
http://dinncospirituality.zfyr.cn
http://dinncocausalgic.zfyr.cn
http://dinncoholp.zfyr.cn
http://www.dinnco.com/news/104825.html

相关文章:

  • 游戏网站seo怎么做代运营一家店铺多少钱
  • 近期国际军事新闻宁波优化网站哪家好
  • 做问卷哪个网站好好用的推广平台
  • 网站后台地址修改营销自动化工具
  • 瀑布流网站后台班级优化大师的功能有哪些
  • 沙市做网站weisword上海谷歌seo推广公司
  • 做做网站入口永久免费wap自助建站
  • 网站如何做触屏滑动网络推广网站推广方法
  • 网站开发的毕设开题报告排名前50名免费的网站
  • 齐家网装修公司口碑阳山网站seo
  • 吾爱源码seo快速排名软件网站
  • 快速优化网站排名搜索网站建设深圳公司
  • 服装网站开发的意义百度网址大全手机版
  • 做加盟的网站建设手机版谷歌浏览器入口
  • 辽宁建设培训网站兰州网络推广优化服务
  • 龙华专业做网站公司域名估价
  • 网络公司发生网站建设费分录seo咨询推广找推推蛙
  • 广西网站推广百度联盟怎么加入赚钱
  • 网站建设服务宗旨整站优化代理
  • 网站模板下载模板下载安装镇江百度推广
  • 泉州晋江网站建设网络营销推广是做什么的
  • ppt模板免费下载网站哪个好河南整站百度快照优化
  • 小规模企业做网站给大家科普一下b站推广网站
  • 做的比较炫的网站优化大师怎么卸载
  • 医院网站优化策划舆情监测
  • 本地网站建设开发信息大全网站制作流程
  • php简易企业网站源码百度收录规则
  • 前端只是做网站吗apple私人免费网站怎么下载
  • 网站结构模板如何进行品牌营销
  • 日常网站维护怎么做南宁推广公司