题目的大意是根据输入的迷宫格子的情况输出从起点到终点可以有多少条路径。因为只能从左向右或从上到下行进,很自然地想到可以用动态规划来解决,dp[i][j]表示从起点到格子(i,j)最多的路径数量。所以,到一个格子的路径数即为起点到其上面格子的路径数和到左边的路径数之和,如果格子为障碍物,则dp[i][j]=0
代码如下:
class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int row=obstacleGrid.length;
int column=obstacleGrid[0].length;
int dp[][]=new int [row][column];
dp[0][0]=1;
for (int i=0;i<row;i++)
{
for (int j=0;j<column;j++)
{
if (obstacleGrid[i][j]==1)
{
dp[i][j]=0;
continue;
}
if(i>=1) dp[i][j]+=dp[i-1][j];
if(j>=1) dp[i][j]+=dp[i][j-1];
}
}
return dp[row-1][column-1];
}
}