63. 不同路径 II
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int len1 = obstacleGrid.size();
if(len1 < 1) return 0;
int len2 = obstacleGrid[0].size();
vector<vector<long>> dp(len1, vector<long>(len2, 0));
int i = 0;
while(i < len1 && obstacleGrid[i][0] != 1)
dp[i++][0] = 1;
for(i; i < len1; i++) dp[i][0] = 0;
int j = 0;
while(j < len2 && obstacleGrid[0][j] != 1)
dp[0][j++] = 1;
for(j; j < len2; j++) dp[0][j] = 0;
for(int m = 1; m < len1; m++){
for(int n = 1; n < len2; n++){
if(obstacleGrid[m][n] == 0) dp[m][n] = dp[m-1][n]+dp[m][n-1];
else dp[m][n]=0;
}
}
return dp[len1-1][len2-1];
}
};