class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
size_t m=obstacleGrid.size();
if(m<=0){
return 0;
}
size_t n=obstacleGrid[0].size(); //m行 n列
if(m==1&&n==1){
if(obstacleGrid[0][0]==0){
return 1;
}else{
return 0;
}
}
vector<vector<int> > dp(m,vector<int>(n,0)); //将将障碍物的点设为0
for(int i=0;i<n;i++){
if(obstacleGrid[0][i]==1){ //障碍物 在第一层
break;
}else{
dp[0][i]=1;
}
}
for(int i=0;i<m;i++){
if(obstacleGrid[i][0]==1){
break;
}else{
dp[i][0]=1;
}
}
for(int i=1;i<m;++i){
for(int j=1;j<n;++j){
if(obstacleGrid[i][j]==1){
dp[i][j]=0;
}else{
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
}
return dp[m-1][n-1];
}
};
dp 矩阵种有障碍物的种数
猜你喜欢
转载自blog.csdn.net/u010325193/article/details/86370916
今日推荐
周排行