不同的路径 II
题目
“不同的路径” 的跟进问题:
现在考虑网格中有障碍物,那样将会有多少条不同的路径?
网格中的障碍和空位置分别用 1 和 0 来表示。注意事项
m 和 n 均不超过100样例
如下所示在3x3的网格中有一个障碍物:
一共有2条不同的路径从左上角到右下角。题解
DP问题
解法与不同路径一致,唯一不同就是需要在遇到障碍物时进行跳过处理。
public class Solution {
/**
* @param obstacleGrid: A list of lists of integers
* @return: An integer
*/
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
// write your code here
int[][] a = new int[obstacleGrid.length][obstacleGrid[0].length];
for (int i=0;i<a.length;i++)
{
if (obstacleGrid[i][0] == 1)
{
break;
}
a[i][0] = 1;
}
for (int i=0;i<a[0].length;i++)
{
if (obstacleGrid[0][i] == 1)
{
break;
}
a[0][i] = 1;
}
for (int i=1;i<a.length;i++)
{
for (int j=1;j<a[0].length;j++)
{
if (obstacleGrid[i][j] == 1)
{
continue;
}
a[i][j] = a[i-1][j]+a[i][j-1];
}
}
return a[a.length-1][a[0].length-1];
}
}
Last Update 2016.9.6