https://leetcode.com/problems/unique-paths-ii/
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
if(obstacleGrid.size()==0) return 0;
long long m=obstacleGrid.size(),n=obstacleGrid[0].size();
long long i=0,j=0,dp[m+5][n+5];
memset(dp, 0, sizeof(dp));
for(i=0;i<m;i++){
if(obstacleGrid[i][0]==1){
while (i<m) {
dp[i][0]=0;
i+=1;
}
}
else dp[i][0]=1;
}
for(j=0;j<n;j++){
if(obstacleGrid[0][j]==1){
while (j<n) {
dp[0][j]=0;
j+=1;
}
}
else dp[0][j]=1;
}
for(i=1;i<m;i++){
for(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];
}
};