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];
}
};
本来是想在原数组上直接改的,但是会出错了,所以单独建一个数组>.<