题目
Follow up for "Unique Paths":
Now consider if some obstacles are added tothe grids. How many unique paths would there be?
An obstacle and empty space is markedas1and0respectively in the grid.
For example,
There is one obstacle in the middle of a3x3 grid as illustrated below.
[
[0,0,0],
[0,1,0],
[0,0,0]
]
The total number of unique paths is2.
Note: m and n will be at most 100.
实现
public class UniquePathTwo {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int m = obstacleGrid.length;// 行
int n = obstacleGrid[0].length;// 列
if(m == 0 || n == 0) {
return0;
}
if(obstacleGrid[0][0] == 1 || obstacleGrid[m - 1][n - 1] == 1) {
return0;
}
int[][] dp = new int[m][n];
dp[0][0]= 1;
for(int i = 1; i < n; i++) {
if(obstacleGrid[0][i] == 1) {
dp[0][i]= 0;
}else {
dp[0][i]= dp[0][i - 1];
}
}
for(int i = 1; i < m; i++) {
if(obstacleGrid[i][0] == 1) {
dp[i][0]= 0;
}else {
dp[i][0]= dp[i - 1][0];
}
}
for(int i = 1; i < m; i++) {
for(int 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];
}
}
}
returndp[m - 1][n - 1];
}
}
本文介绍了一个算法问题,即在一个存在障碍物的网格中寻找从起点到终点的不同路径数量。通过动态规划的方法,详细展示了如何根据网格大小及障碍物位置计算可能路径总数。
1143

被折叠的 条评论
为什么被折叠?



