最短路径的问题相对简单,因为很容易拆分子问题并找到状态转移方程。对于当前结点,只需找到到达该节点的所有结点。
1,最小路径和
给定一个包含非负整数的
m x n
网格grid
,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。
来源:64. 最小路径和
解题思路:
对于当前结点,能够到达该结点的只能是 上 和 左 两个结点,例如下图中能够到达结点5的只能是结点1和结点3。
状态转移方程为:dp[i][j] = min{dp[i-1][j], dp[i][j-1]} + matrix[i][j]。
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
vector<vector<int>> dp = grid;
int m = grid.size(), n = g