题目链接:https://leetcode.com/problems/minimum-path-sum/description/

题目大意:从左上到右下的路径中,找出路径和最小的路径(与62,63题相联系)。

法一:dfs,果然超时,无剪枝。代码如下:

 1     public int minPathSum(int[][] grid) {
 2         boolean vis[][] = new boolean[grid.length][grid[0].length];
 3         int f[][] = {{1, 0}, {0, 1}};
 4         return dfs(grid, 0, 0, grid[0][0], Integer.MAX_VALUE, vis, f);
 5     }
 6     public static int dfs(int[][] grid, int x, int y, int sum, int res, boolean vis[][], int f[][]) {
 7         if(sum >= res) {
 8             return res;
 9         }
10         if(x == grid.length - 1 && y == grid[0].length - 1) {
11             if(sum < res) {
12                 res = sum;
13             }
14             return res;
15         }
16         for(int i = 0; i < 2; i++) {
17             int cnt_x = x + f[i][0];
18             int cnt_y = y + f[i][1];
19             if(cnt_x < grid.length && cnt_y < grid[0].length && vis[cnt_x][cnt_y] == false) {
20                 vis[cnt_x][cnt_y] = true;
21                 res = dfs(grid, cnt_x, cnt_y, sum + grid[cnt_x][cnt_y], res, vis, f);
22                 vis[cnt_x][cnt_y] = false;
23             }
24         }
25         return res;
26     }
View Code

相关文章:

  • 2021-12-21
  • 2021-09-07
  • 2022-01-04
  • 2021-06-10
  • 2021-06-03
  • 2021-09-21
猜你喜欢
  • 2022-01-10
  • 2021-10-06
相关资源
相似解决方案