标签:
Follow up for "Unique Paths":
Now consider if some obstacles are added to the grids. How many unique paths would there be?
An obstacle and empty space is marked as 1 and 0 respectively
in the grid.
For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.
[ [0,0,0], [0,1,0], [0,0,0] ]
The total number of unique paths is 2.
Note: m and n will be at most 100.
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int M=obstacleGrid.size();
int N=obstacleGrid[0].size();
//左上角和右下角为1,则返回0
if(obstacleGrid.size()==0||obstacleGrid[0].size()==0||obstacleGrid[0][0]==1||obstacleGrid[M-1][N-1]==1)
return 0;
vector<vector<int>> res(M,vector<int>(N,1));
for(int i=1;i<M;i++)
{
for(int j=1;j<N;j++)
{
if(obstacleGrid[i][j]==1)
res[i][j]=0;
else
{
if(obstacleGrid[i-1][j]==0&&obstacleGrid[i][j-1]==0)
res[i][j]=res[i-1][j]+res[i][j-1];
else if(obstacleGrid[i-1][j]==1&&obstacleGrid[i][j-1]==0)
res[i][j]=res[i][j-1];
else if(obstacleGrid[i-1][j]==0&&obstacleGrid[i][j-1]==1)
res[i][j]=res[i-1][j];
else
res[i][j]=0;
}
}
}
return res[M-1][N-1];
}
};leetcode No63. Unique Paths II
标签:
原文地址:http://blog.csdn.net/u011391629/article/details/52097806