我正在一个名为 leetcode 的网站上做这个名为“唯一路径”的问题。问题是:给定一个包含 1 和 0 的二维矩阵,机器人从左上角开始,想要到达右下角。机器人只有 2 个动作:向右和向下。此外,还有障碍(由“1”表示)。机器人不能跨过障碍物。当我输入时,我的程序给出了错误的答案:
0000
0100
0000
0000
应该输出 7,因为从左上角的方块到右下角的方块有 7 条路径。我的程序输出 2。我的猜测是,它只会一直向下并一直向右,一直向右并一直向下。但是,我不知道这种行为的原因,因为它对我来说看起来很好。谁能告诉我为什么要这样做?这是代码:
class Solution {
int[][] check;
public int uniquePathsWithObstacles(int[][] grid) {
if(grid == null || grid.length == 0)
return 0;
check = new int[grid.length][grid[0].length];
return uniquePaths(grid, 0, 0);
}
private int uniquePaths(int[][] grid, int x, int y){
if(x >= grid[0].length || y >= grid.length || grid[y][x] == 1)
return 0;
else if(x == grid[0].length - 1 && y == grid.length - 1)
return 1;
else if(check[y][x] > 0)
return check[y][x];
return grid[y][x] = uniquePaths(grid, x + 1, y) + uniquePaths(grid, x, y + 1);
}
}
胡子哥哥
相关分类