1.dp数组为二维数组,首先我们得知道dp[i][j]的含义,由于求的就是不同路径,那么数组对应的就是,从开始到ij位置下拥有的不用路径。
2.由于关系可知,其实当前位置的路径是左边和上面的和,dp的条件就是:dp[i][j]=dp[i-1][j]+dp[i][j-1];
3.初始化时,我们需注意,第一行与第一列都只有一条路能走,那么初始化第一行与第一列都为1
4.最后返回结果在dp[m-1][n-1];
- class Solution {
- public:
- int uniquePaths(int m, int n) {
- vector
int>> dp(m,vector<int>(n,0)); - for(int i=0;i
- dp[0][i]=1;
- for(int i=0;i
- dp[i][0]=1;
- for(int i=1;i
- {
- for(int j=1;j
- {
- dp[i][j]=dp[i-1][j]+dp[i][j-1];
- }
- }
- return dp[m-1][n-1];
- }
- };
2.不同路径 II
大致思路其实与上一题基本一致。只不过需要对被阻塞的地方对应的dp数组位置数据进行调整。
1.初始化时,如果遇到阻塞,之后的数据一律为0,因为无法走到了
2.由于关系可知,其实当前位置的路径是左边和上面的和,如果没有阻塞dp的条件就是:dp[i][j]=dp[i-1][j]+dp[i][j-1];如果阻塞了,那么dp[i][j]=0
3.最后返回结果在dp[m-1][n-1];
- class Solution {
- public:
- int uniquePathsWithObstacles(vector
int >>& obstacleGrid) { - vector
int>> dp(obstacleGrid.size(),vector<int>(obstacleGrid[0].size(),0)); - for(int i=0;i
size();i++) - {
- if(obstacleGrid[i][0]==1)
- break;
- dp[i][0]=1;
- }
- for(int i=0;i
0].size();i++) - {
- if(obstacleGrid[0][i]==1)
- break;
- dp[0][i]=1;
- }
- for(int i=1;i
size();i++) - {
- for(int j=1;j
0].size();j++) - {
- if(obstacleGrid[i][j]==1)
- dp[i][j]=0;
- else
- dp[i][j]=dp[i-1][j]+dp[i][j-1];
- }
- }
- return dp[obstacleGrid.size()-1][obstacleGrid[0].size()-1];
- }
- };
3.最小路径和
本题思路其实也和上面差不多
1.dp数组为二维数组,dp数组表示开始到当前位置的最小路径
2.初始化时,第一行与第一列都只有一条路能走,dp当前位置数据为dp上一次位置的数据加上grid数组当前位置的和
3.由于关系可知,其实当前位置的路径最小和是左边和上面之中较小的那一个加上当前位置路径的大小,条件为dp[i][j]=grid[i][j]+min(dp[i-1][j],dp[i][j-1]);
- class Solution {
- public:
- int minPathSum(vector
int >>& grid) { - vector
int>> dp(grid.size(),vector<int>(grid[0].size(),0)); - dp[0][0]=grid[0][0];
- for(int i=1;i
size();i++) - dp[i][0]=grid[i][0]+dp[i-1][0];
- for(int i=1;i
0].size();i++) - dp[0][i]=grid[0][i]+dp[0][i-1];
- for(int i=1;i
size();i++) - {
- for(int j=1;j
0].size();j++) - dp[i][j]=grid[i][j]+min(dp[i-1][j],dp[i][j-1]);
- }
- return dp[grid.size()-1][grid[0].size()-1];
- }
- };
-
相关阅读:
高频:spring知识
互联网医院系统源码:预约问诊小程序的开发方案详解
22字符串-简单反转
doxygen制作接口文档
混合灰狼和布谷鸟搜索优化算法(Matlab完整代码实现)
别再说你不知道分布式事务了
shell环境变量以及set,env,export的区别
ruoyi登录功能源码分析
文件传输工具WinSCP下载安装使用教程
Lua中如何实现类似gdb的断点调试--05优化断点信息数据结构
-
原文地址:https://blog.csdn.net/m0_63488627/article/details/130897985