标签:
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]; }
标签:
原文地址:http://blog.csdn.net/li_chihang/article/details/44338109