64. 最小路径和(动态规划:图示详细解析)

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

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

示例:

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

思路:dp

 

由于只能向右走或向下走

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

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

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

64. 最小路径和(动态规划:图示详细解析)_第1张图片

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

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

你可能感兴趣的:(Leetcode,Leetcode带思路,动态规划)