这个题是从左上角到右下角的路径和最小,实际就是一道dp题。

第一种写法是只初始化(0,0)位置,第二种写法则是把第一行、第一列都初始化了。个人更喜欢第二种写法,简单一点。

dp的右下角的值就为最终的值

第一种写法:

class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int rows = grid.size();
if(rows <= )
return -;
int cols = grid[].size();
if(cols <= )
return -;
vector<vector<int> > result(rows,vector<int>(cols));
result[][] = grid[][];
for(int i = ;i < rows;i++){
for(int j = ;j < cols;j++){
if(i != && j != )
result[i][j] = grid[i][j] + min(result[i-][j],result[i][j-]);
if(i == && j != )
result[i][j] = result[i][j-] + grid[i][j];
if(j == && i != )
result[i][j] = result[i-][j] + grid[i][j];
}
}
return result[rows-][cols-];
}
};

第二种写法:

class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int m = grid.size();
if(m <= )
return ;
int n = grid[].size();
if(n <= )
return ;
vector<vector<int> > dp(m,vector<int>(n));
dp[][] = grid[][];
for(int i = ;i < m;i++)
dp[i][] = dp[i-][] + grid[i][];
for(int i = ;i < n;i++)
dp[][i] = dp[][i-] + grid[][i];
for(int i = ;i < m;i++){
for(int j = ;j < n;j++){
dp[i][j] = grid[i][j] + min(dp[i-][j],dp[i][j-]);
}
}
return dp[m-][n-];
}
};

最新文章

  1. Aspose.Words基本操作
  2. 数位DP 求K进制下0~N的每个数每位上出现的数的总和
  3. Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性
  4. php缓存数组到文件
  5. P1912: [Apio2010]patrol 巡逻
  6. 搭建完整邮件系统(postfix+dovecot+clamAV+Spamassassin+amavisd-new)
  7. Android单元测试: 首先,从是什么开始
  8. MySQL学习笔记(一)&mdash;数据库基础
  9. ThinkPHP框架的增删改
  10. Max Consecutive Ones
  11. 切换Allegro PCB Editor
  12. idea的mybatis的mysql语句的小数转换百分号
  13. php5.5.7添加pgsql,pdo_pgsql,swoole
  14. 【tmos】spring boot项目中处理Schedule定时任务
  15. C#实现复杂XML的序列化与反序列化
  16. ppoint的使用
  17. sql server数据库自动备份
  18. 对怎样充分利用安卓官方开发网站的一个简单性介绍介绍-https://developer.android.google.cn/docs/
  19. pandas 筛选指定行或者列的数据
  20. sublime text2 配置

热门文章

  1. 中南月赛 B题 Scoop water
  2. SQL Server Metadata
  3. input button 与 submit 的区别
  4. Modern Operating System
  5. Windows server 2008 Tips
  6. Windows 10 Framework 3.5 _x64 离线安装包 最新安装版
  7. 对View的onMeasure()方法的进一步研究
  8. Unity3D-NGUI动态加载图片
  9. Non-resolvable parent POM for com.*******
  10. linux用户的增加与删除