题意:Unique Path的衍生题,加入了障碍物。
思路:DP,将障碍物的dp值置为0。
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
vector<vector<int> > dp = obstacleGrid;
if(obstacleGrid[0][0] == 1) return 0;
else dp[0][0] = 1;
for(int i = 0; i < dp.size(); ++ i) {
for(int j = 0; j < dp[i].size(); j ++) { if(i == 0 && j == 0) continue;
if(obstacleGrid[i][j] == 1) {
dp[i][j] = 0;
continue;
}
int up = 0;
int bf = 0;
if(i - 1 >= 0) up = dp[i - 1][j];
if(j - 1 >= 0) bf = dp[i][j - 1];
dp[i][j] = up + bf;
}
}
return dp[dp.size() - 1][dp[0].size() - 1];
}
};