【LeetCode64 Minimum Path Sum】动态规划计算路径
来源:互联网 发布:知已知彼百战不殆 编辑:程序博客网 时间:2024/06/05 07:43
一、问题描述
给定一个m*n的方格,其中每一个方格中都有一个数字,现在从方格最左上方移动到最右下方,每次移动只能是想下移动或者向右移动。对于每一条路径都对应一个路径和的概念,即为该路径中所有方格中数字的和,需要求出最左上方到最右下方的所有路径中,路径和最小的那个,并且输出该路径和。
二、思路解析
这道题思路较为简单,同样的利用动态规划思路去解决问题,计算出从起点到m*n矩阵中每一个方格的最短路径值,并将其存储到一个m8n大小的矩阵path中,最后输出path[m-1][n-1]即可。由于每一个方格只能是路过其上方或者左侧方格得到,因此该方格的最小路径值为该方格值加上其左侧方格和上方方格中路径值较小的那个,既可以得到公式path[i][j] = grid[i][j] + min(path[i - 1][j],path[i][j - 1]),根据公式计算出每一个方格的最小路径值即可。
三、代码实现
class Solution {public: int minPathSum(vector<vector<int>>& grid) { int n = grid[0].size(); int m = grid.size(); vector<vector<int>> path(m,vector<int> (n,0)); path[0][0] = grid[0][0]; if(m == 1 && n == 1) return grid[0][0]; for(int i = 1; i < n;i++) { path[0][i] = path[0][i - 1] + grid[0][i]; } for(int i = 1; i < m;i++) { path[i][0] = path[i - 1][0] + grid[i][0]; } if(m > 1 && n > 1) { for(int i = 1; i < m; i++) { for(int j = 1; j < n; j++) { path[i][j] = grid[i][j] + min(path[i - 1][j],path[i][j - 1]); } } } return path[m - 1][n - 1]; }};
阅读全文
0 0
- 【LeetCode64 Minimum Path Sum】动态规划计算路径
- leetcode64-Minimum Path Sum(最小路径和)
- LeetCode64:Minimum Path Sum
- Leetcode64 Minimum Path Sum
- [leetcode64]Minimum Path Sum
- LeetCode64. Minimum Path Sum
- Leetcode64 minimum path sum
- leetcode64. Minimum Path Sum
- leetcode64. Minimum Path Sum
- Leetcode64. Minimum Path Sum
- LeetCode64 Minimum Path Sum
- LeetCode64. Minimum Path Sum题解
- 【动态规划】minimum-path-sum
- 动态规划----Minimum Path Sum
- 动态规划--最小路径和(Minimum Path Sum)
- leetcode 64. Minimum Path Sum-最小路径和|动态规划
- LeetCode64——Minimum Path Sum
- [LeetCode] [动态规划] Minimum Path Sum
- 输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数
- together进度报告9
- 世界首个合法授权:双人飞行汽车GyroDrive已上路
- 网络层协议IP/ICMP/DHCP/ARP/TCP数据的捕获与分析
- 传输层的复用和解复用
- 【LeetCode64 Minimum Path Sum】动态规划计算路径
- 3.1 Linux中的文件IO (13、14节)
- Spring(1-1、基于xml装配Bean)
- C8051F没有无法进main函数的解决办法之一
- 解决IIS+PHP出现的“500
- 7. Reverse Integer
- Java基础教程18-方法传参和返回值
- Lecture 2: Supervised machine learning
- http协议无状态中的 "状态" 到底指的是什么?!