给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
示例:
输入:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。
思路分析:因为图上只有下移、右移两种移动方式,那么到达dp[row][col]只可能从dp[row - 1][col]上方下移,或者dp[row][col - 1]左方右移两种方式。由于题目要求求最小路径,那么到达grid[row][col]的最小路径为,min(上方、左方) +grid[row][col]。
移动示意图:
动态规划方程示意图:
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int rowNum = grid.size();
if (rowNum == 0){