【算法挨揍日记】day19——62. 不同路径、63. 不同路径 II

编程入门 行业动态 更新时间:2024-10-28 10:26:56

【算法挨揍日记】day19——62. 不同<a href=https://www.elefans.com/category/jswz/34/1771438.html style=路径、63. 不同路径 II"/>

【算法挨揍日记】day19——62. 不同路径、63. 不同路径 II

 62. 不同路径 

62. 不同路径

题目描述: 

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

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

问总共有多少条不同的路径?

 解题思路:

状态表示:dp[i][j]表示在到达(i,j)位置后,路线的总数

状态转移方程:

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

初始化:

因为我们从(1,1位置开始遍历,我们要保证1,1位置的值要为1),因此我们需要将(0,1)位置设为1,来满足状态转移方程

填表顺序:左到右

返回值:dp【m】【n】

解题代码:

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>>dp(m+1,vector<int>(n+1,0));dp[0][1]=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][n];}
};

63. 不同路径 II

63. 不同路径 II

题目描述:

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

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

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

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

解题思路:

状态表示: dp[i][j]在到达(i,j)后,路线的总数

状态转移方程:当ob(i-1,j-1)等于0的时候,如果向下向右的可以的话,ob(i-1,j-1)就为0,为1的话就没有意义了

初始化:

dp【0】【1】=1

填表顺序:从左到右

返回值:dp【m】【n】;

解题代码: 

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

更多推荐

【算法挨揍日记】day19——62. 不同路径、63. 不同路径 II

本文发布于:2023-11-16 14:25:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1625784.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:路径   算法   日记   II

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!