//动态规划方程: res[j]+=res[j-1]
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
if(obstacleGrid.size()==0||obstacleGrid[0].size()==0)
return 0;
int len=obstacleGrid[0].size();
int res[len]={0}; //全部初始化为0
res[0]=1;//不考虑障碍的话,初值为1
for(int i=0;i<obstacleGrid.size();i++)
{
for(int j=0;j<obstacleGrid[0].size();j++){
if(obstacleGrid[i][j]==1){
res[j]=0; //考虑障碍,赋值为0
}
else{
if(j>0)
res[j]+=res[j-1]; //每一行的数都是前面一个元素的值加上已有的值
}
}
}
return res[obstacleGrid[0].size()-1];
}
};

本文介绍了一种使用动态规划算法解决带障碍物的网格中从起点到终点唯一路径数量的问题。通过逐行更新路径计数并考虑障碍物的影响,最终得到到达右下角的路径总数。
1170

被折叠的 条评论
为什么被折叠?



