当前位置:   article > 正文

64. 最小路径和(动态规划:图示详细解析)_走格子求最小(大)路径和

走格子求最小(大)路径和

给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

示例:

  1. 输入:
  2. [
  3.   [1,3,1],
  4. [1,5,1],
  5. [4,2,1]
  6. ]
  7. 输出: 7
  8. 解释: 因为路径 1→3→1→1→1 的总和最小。

思路:dp

 

由于只能向右走或向下走

所以当前格子的最小路径等于min(当前格子的上一格的最小路径,当前格子的左一格的最小路径)+当前格子的值

由此我们可以得到一个递推式:

m[ i ] [ j ] = min (m[ i-1 ] [ j ] , m[ j-1 ] [ i ]) + grid[ i ] [ j ]

如上图,我们用m[i][j]来表示第i行第j列的最小路径

那么想知道m[i][j],必须先知道 m[ i-1 ] [ j ] 和 m[ j-1 ] [ i ] 和 grid[ i ] [ j ](grid已知,就是题目给的二维数组对应位置的值)

那么我们只需要建一个和grid一样的二维数组,按照上面递推式按行填表,即可得到所有位置的最小路径,也就得到了我们需要的最后一个位置的最小路径

小技巧,在初

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/882988
推荐阅读
相关标签
  

闽ICP备14008679号