63. Unique Paths II
来源:互联网 发布:淘宝小号 浮云网 编辑:程序博客网 时间:2024/06/16 06:15
上一个题目的完整解题思路:
http://blog.csdn.net/daigualu/article/details/76018298
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.
注意
几个边界情况:
1.[0]
2.[0,1]
3.[0,0],[0,1]
代码实现
//state transition equation: //dp[i,j] = dp[i-1,j]+dp[i,j-1] //boundary: dp[0,j]=1; dp[i,0]=1 //constraint condition: //if(obstacleGrid[i-1,j]==1) dp[i-1,j]=0; //if(obstacleGrid[i,j-1]==1) dp[i,j-1]=0;public class Solution { public int UniquePathsWithObstacles(int[,] obstacleGrid) { int m = obstacleGrid.GetUpperBound(0) + 1; int n = obstacleGrid.GetUpperBound(1) + 1; int[,] dp = new int[m, n]; dp[0, 0] = obstacleGrid[0, 0] == 0 ? 1 : 0; if (obstacleGrid[m - 1, n - 1] == 1) return 0; //two boundaries: for (int i = 1; i < m; i++) { if (obstacleGrid[i, 0] == 0) dp[i, 0] = dp[i - 1, 0]; else dp[i, 0] = 0; } for (int i = 1; i < n; i++) { if (obstacleGrid[0, i] == 0) dp[0, i] = dp[0, i - 1]; else dp[0, i] = 0; } //dp[i][j] = dp[i-1][j]+dp[i][j-1] for (int i = 1; i < m; i++) { for (int j = 1; j < n; j++) { if (obstacleGrid[i - 1, j] == 1) dp[i - 1, j] = 0; if (obstacleGrid[i, j - 1] == 1) dp[i, j - 1] = 0; dp[i, j] = dp[i - 1, j] + dp[i, j - 1]; } } return dp[m - 1, n - 1]; }}
阅读全文
2 0
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- JavaSE编程基础 第三章 控制语句
- 修改wamp的apache默认端口80以及www目录
- 抽取文本中的日期和时间
- JavaSE编程基础 第四章 数组
- HBase如何合理设置客户端Write Buffer
- 63. Unique Paths II
- shell 下不能使用tab补全命令
- el 表达式的方法
- NFS文件系统操作命令
- xynuoj 2-1 连乘计算
- HDU 5972 Regular Number Bitset (字符串匹配shift and/or)
- XYNU OJ 1110—1121基础题(适合于C语言初学者)
- java集合WeakHashMap测试
- 精确探测时间