63.不同路径Ⅱ
思路;动态规划dp,和LeetCode 62. 不同路径(动态规划dp || 组合数)的差别,就是在计算dp[i][j]时,需要满足obstacleGrid[i][j-1]==0或obstacleGrid[i-1][j]==0。也就是到(i,j)之前的点是可以抵达的。
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m=obstacleGrid.size(),n=obstacleGrid[0].size();
int dp[105][105];
memset(dp,0,sizeof dp);
dp[0][0]=1;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(j-1>=0&&obstacleGrid[i][j-1]==0) dp[i][j]+=dp[i][j-1];
if(i-1>=0&&obstacleGrid[i-1][j]==0) dp[i][j]+=dp[i-1][j];
}
}
if(obstacleGrid[m-1][n-1]==0) return dp[m-1][n-1];
else return 0;
}
};