Q:给定一个由非负整数填充的m x n的二维数组,现在要从二维数组的左上角走到右下角,请找出路径上的所有数字之和最小的路径。
注意:你每次只能向下或向右移动。
A:还是典型动态规划问题。

    public static int minPathSum(int[][] grid) {
        int size1 = grid.length;//行数
        int size2 = grid[0].length;//列数
        int[][] dp = new int[size1][size2];
        dp[0][0] = grid[0][0];
        for (int i = 1; i < size2; i++) {
            dp[0][i] = dp[0][i - 1] + grid[0][i];
        }
        for (int j = 1; j < size1; j++) {
            dp[j][0] = dp[j - 1][0] + grid[j][0];
        }
        int min = 0;
        for (int i = 1; i < size1; i++) {
            for (int j = 1; j < size2; j++) {
                min = Math.min(dp[i - 1][j], dp[i][j - 1]);
                dp[i][j] = min + grid[i][j];
            }
        }
        return dp[size1 - 1][size2 - 1];
    }

相关文章:

  • 2021-07-01
  • 2021-09-13
  • 2021-09-14
  • 2021-12-01
  • 2021-10-08
  • 2021-06-10
  • 2021-09-26
猜你喜欢
  • 2021-07-31
  • 2021-04-10
  • 2021-07-11
  • 2021-12-14
  • 2022-12-23
  • 2022-02-11
相关资源
相似解决方案