给定一个包含非负整数的 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 ]
如上图,我们用m[i][j]来表示第i行第j列的最小路径
那么想知道m[i][j],必须先知道 m[ i-1 ] [ j ] 和 m[ j-1 ] [ i ] 和 grid[ i ] [ j ](grid已知,就是题目给的二维数组对应