您的位置:首页 > 产品设计 > UI/UE

Unique Paths II

2013-11-08 20:48 253 查看
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.

代码:

vector<vector<int> >result;
int search(int sx, int sy, int ex, int ey, vector<vector<int> > &obstacleGrid){
if(sx > ex || sy > ey || obstacleGrid[sx][sy] == 1)
return 0;
if(result[sx][sy] != -1)
return result[sx][sy];
if(sx == ex && sy == ey)
return 1;
result[sx][sy] = search(sx+1, sy, ex, ey, obstacleGrid) + search(sx, sy+1, ex, ey, obstacleGrid);
return result[sx][sy];
}
int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
result.clear();
int m = obstacleGrid.size();
if(m == 0)
return 0;
int n = obstacleGrid[0].size();
if(n == 0)
return 0;
int i,j;
for(i = 0; i < m; i++){
vector<int> tmp(n, -1);
result.push_back(tmp);
}
return search(0, 0, m-1, n-1, obstacleGrid);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: