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
.
int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
vector<vector<int> >Paths(obstacleGrid);
int FG = false;
for (int i = 0; i != Paths.size(); ++i)
{
if (FG)
Paths[i][0] = 0;
else if (obstacleGrid[i][0] == 1)
{
FG = true;
Paths[i][0] = 0;
}
else
Paths[i][0] = 1;
}
FG = false;
for (int j = 1; j != Paths[0].size(); ++j)
{
if (FG)
Paths[0][j] = 0;
else if (obstacleGrid[0][j] == 1)
{
FG = true;
Paths[0][j] = 0;
}
else
Paths[0][j] = 1;
}
for (int i = 1; i != Paths.size(); ++i)
{
for (int j = 1; j != Paths[0].size(); ++j)
{
if (obstacleGrid[i][j]==1)
Paths[i][j] = 0;
else
Paths[i][j] = Paths[i - 1][j] + Paths[i][j - 1];
}
}
return Paths[Paths.size() - 1][Paths[0].size() - 1];
}