这题和62题以及63题类似,只不过dp数组的状态表示变了,这里dp数组不再表示方案数,而是到当前格子的最小路径和。可以发现:要到达第i行第j列的格子,只有从第i - 1行第j列的格子或第i行第j - 1列的格子加上到第i行第j列的格子需要的代价(grid[i][j])得到,所以如果要得到到第i行第j列格子的最小路径和,我们只需要获取第i - 1行第j列的格子或第i行第j - 1列的格子二者中路径和较小的那个,再加上grid[i][j]即可。

由此我们得到状态转移方程:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];

获得状态转移方程后,还需要对dp数组做初始化,显然第0列某个格子的最小路径和等于从起点开始到当前格子的所有代价(grid)相加得到,因为要到第0列的格子只有从起点一直向下走这一种走法。同理,到第0行的格子也等于从起点开始到当前格子的所有代价总和。

有了递推边界和状态转移方程之后,我们就可以从边界递推到整个数组,最终返回右下角的格子的最小路径和。

class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int rows = grid.size(), cols = grid[0].size(); //获取总行数和总列数
if(rows == 0 || cols == 0) { //需要特判行数或列数为0的情况,LeetCode特色
return 0;
}
vector<vector<int>> dp(rows, vector<int>(cols)); //dp[i][j]表示到第i行第j列的格子的最小路径和
dp[0][0] = grid[0][0];
for(int i = 1; i < rows; ++i) { //初始化边界:第0列的所有格子的最小路径和都是从起点开始到当前格子的代价总和
dp[i][0] = dp[i - 1][0] + grid[i][0];
}
for(int i = 1; i < cols; ++i) { //初始化边界:第0行的所有格子的最小路径和都是从起点开始到当前格子的代价综合
dp[0][i] = dp[0][i - 1] + grid[0][i];
}
for(int i = 1; i < rows; ++i) {
for(int j = 1; j < cols; ++j) {
dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
}
}
return dp[rows - 1][cols - 1];
}
};

最新文章

  1. CSS实例
  2. elasticseach multi-field的实际用途
  3. HTML5和css3的总结二
  4. C语言接口的写法(以toyls命令为例)
  5. Linux Shell编程(5):整数运算
  6. stop()方法的精准应用
  7. Communication System
  8. 模仿qq音乐播放字母效果
  9. php代码结尾不要添加结尾标记
  10. jQuery插件Jeditable的使用(Struts2处理)
  11. 【LeetCode练习题】Minimum Path Sum
  12. GCD 多线程 ---的记录 iOS
  13. java多线程2
  14. Mysql -- 数据类型(2)
  15. c#异步学习笔记
  16. 退出全屏监听ESC事件,这里没有用keydown来监听,因为全屏时候keydown监听不到
  17. java虚拟机的堆内存配置
  18. CF1038E Maximum Matching 搜索/区间DP
  19. Neural Networks and Deep Learning(week4)Deep Neural Network - Application(图像分类)
  20. 【CTF WEB】服务端请求伪造

热门文章

  1. java实现第六届蓝桥杯熊怪吃核桃
  2. Linux 用户管理命令-useradd
  3. Java学习之斐波那契数列实现
  4. 从windows到Mac的那些坑
  5. ASP.NET Core Blazor Webassembly 之 路由
  6. (三)SQLMap工具-使用选项的操作命令&amp;功能
  7. 关于64位W7下怎么学习汇编语言的一些心得!
  8. 一文带你快速搞懂动态字符串SDS,面试不再懵逼
  9. javaCV开发详解之12:视频转apng动态图片实现,支持透明通道,也支持摄像机、桌面屏幕、流媒体等视频源转apng动态图
  10. HashMap(三)之源码分析