An simple enhanced vision of last problem, we just need to judge whether add the path if there's an obstacle. However, the initial state should be paid attention, which wasted me some time.
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m = obstacleGrid.size();
int n = obstacleGrid[0].size();
int dp[105][105];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
dp[i][j]=0;
}
}
dp[0][1]=1;
if(obstacleGrid[0][0] == 1)
return 0;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(obstacleGrid[i-1][j-1]==0)
dp[i][j] = dp[i-1][j]+dp[i][j-1];
else
dp[i][j] = 0;
}
}
return dp[m][n];
}
};