LeetCode63
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m=obstacleGrid.size();
int n=obstacleGrid[0].size();
//int (*a)[3]=new int a[2][3];
//int* a=new int[2][3]; //都不能怎么初始化,不知道为啥。。。
int a[m][n];
if(obstacleGrid[0][0]==1 || m==0) return 0;
if(m==1 && n==1) return 1;
for(int i=0 ; i<m ; i++){
if(obstacleGrid[i][0]!=1)
a[i][0]=1;
else{
while(i<m){ //a没有初始化,所以都必须初始化了
a[i][0]=0;
i++;
}
break;
}
//这句表示第一行或者第一列如果有点是障碍物的话,那么之后的点就不用赋值了,因为之后的点走不通,所以直接break
}
for(int i=0 ; i<n ; i++){
if(obstacleGrid[0][i]!=1)
a[0][i]=1;
else {
while(i<n){
a[0][i]=0;
i++;
}
break;
}
}
for(int i=1 ; i<m ; i++)
for(int j=1 ; j<n ; j++){
if(obstacleGrid[i][j]==1)
a[i][j]=0;
else
a[i][j]=a[i-1][j]+a[i][j-1];
}
return a[m-1][n-1];
}
};
本来是想在原数组上直接改的,但是会出错了,所以单独建一个数组>.<
本文详细解析了LeetCode第63题“不同路径 II”的解决方案,通过动态规划算法来计算在一个包含障碍物的网格中从左上角到右下角的不同路径数量。文章提供了一个C++实现示例,并探讨了在原数组上修改导致的问题。
530

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



