64.Minimum Path Sum
Posted luo-c
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了64.Minimum Path Sum相关的知识,希望对你有一定的参考价值。
给定一个矩阵,矩阵中的元素表示成本,求,从矩阵左上角到右下角最小的成本路线,每一次只能向右或者向下走。
Input:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
Output: 7
Explanation: Because the path 1→3→1→1→1 minimizes the sum.
思路:
此题跟62题类似,不同点在于,此题计算最小成本,则将DP中存储每一个节点的最小成本即可。对于DP的初始,两边的值需要单独初始化,其余的点:dp[i][j] = min(dp[i-1][j] , dp[i][j-1]) + grid[i][j].
class Solution { public: int minPathSum(vector<vector<int>>& grid) { int n = grid.size(), m = grid[0].size(); vector<vector<int>> dp(n, vector<int>(m)); dp[0][0] = grid[0][0]; for (int k = 1; k < m; k++) dp[0][k] = grid[0][k] + dp[0][k-1]; for (int k = 1; k < n; k++) dp[k][0] = grid[k][0] + dp[k-1][0]; for (int i = 1; i < n; i++) { for (int j = 1; j < m; j++) dp[i][j] = min(dp[i][j - 1], dp[i - 1][j]) + grid[i][j]; } return dp[n - 1][m - 1]; } };
以上是关于64.Minimum Path Sum的主要内容,如果未能解决你的问题,请参考以下文章