题目链接

题目大意:与62题类似,只是这个题中间有障碍。

法一:dfs,依旧超时。代码如下:

 1     public int uniquePathsWithObstacles(int[][] obstacleGrid) {
 2         boolean vis[][] = new boolean[obstacleGrid.length][obstacleGrid[0].length];
 3         int f[][] = {{1, 0}, {0, 1}};
 4         //如果起始格子就是障碍,则表示不能正常到达目的地
 5         if(obstacleGrid[0][0] == 1) {
 6             return 0;
 7         }
 8         return dfs(obstacleGrid, 0, 0, 0, f, vis);
 9     }
10     public static int dfs(int[][] obstacleGrid, int x, int y, int cnt, int f[][], boolean vis[][]) {
11         if(x == obstacleGrid.length - 1 && y == obstacleGrid[0].length - 1 && obstacleGrid[x][y] == 0) {
12             cnt++;
13             return cnt;
14         }
15         for(int i = 0; i < 2; i++) {
16             int cnt_x = x + f[i][0];
17             int cnt_y = y + f[i][1];
18             if(cnt_x < obstacleGrid.length && cnt_y < obstacleGrid[0].length && vis[cnt_x][cnt_y] == false && obstacleGrid[cnt_x][cnt_y] == 0) {
19                 vis[cnt_x][cnt_y] = true;
20                 cnt = dfs(obstacleGrid, cnt_x, cnt_y, cnt, f, vis);
21                 vis[cnt_x][cnt_y] = false;
22             } 
23         }
24         return cnt;
25     }
View Code

相关文章:

  • 2021-06-10
  • 2021-07-21
  • 2021-09-21
  • 2021-11-07
  • 2021-12-27
  • 2021-09-17
  • 2022-02-15
猜你喜欢
  • 2021-09-15
  • 2021-10-11
相关资源
相似解决方案