博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]64.Minimum Path Sum
阅读量:5780 次
发布时间:2019-06-18

本文共 1396 字,大约阅读时间需要 4 分钟。

【题目】

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

Note: You can only move either down or right at any point in time.

【思路】

设sum[i][j] 到位置(i,j)时路径最小和

状态转移方程:

sum[i][j] = min(sum[i][j-1] ,sum[i-1][j]) + grid[i][j] 

 优化(空间轮转):

sum[j] = min(sum[j],sum[j-1]) + grid[i][j]

【代码】

/*------------------------------------    *   日期:2015-02-04    *   作者:SJF0115    *   题目: 64.Minimum Path Sum    *   网址:https://oj.leetcode.com/problems/minimum-path-sum/    *   结果:AC    *   来源:LeetCode    *   博客:    ---------------------------------------*/    #include 
#include
#include
#include
using namespace std; class Solution { public: int minPathSum(vector
> &grid) { if(grid.empty()){ return 0; }//if int row = grid.size(); int col = grid[0].size(); vector
sum(grid[0]); // 第一行 只能从左边过来 for(int i = 1;i < col;++i){ sum[i] += sum[i-1]; }//for // 动态规划 // sum[j] = min(sum[j],sum[j-1]) + grid[i][j] for(int i = 1;i < row;++i){ sum[0] += grid[i][0]; for(int j = 1;j < col;++j){ sum[j] = min(sum[j],sum[j-1]) + grid[i][j]; }//for }//for return sum[col-1]; } }; int main(){ Solution s; vector
> grid = { {1,5,3,7},{2,6,4,1},{5,4,6,5}}; int result = s.minPathSum(grid); // 输出 cout<
<
你可能感兴趣的文章
虚拟货币一暴跌就有专家出来装先知,先去学学区块链的基本知识吧
查看>>
停课、停邮、停飞 凛冬笼罩美中西部 至少12人死亡
查看>>
如何从信号角度理解卷积神经网络?
查看>>
前端面试查漏补缺--(八) 前端加密
查看>>
【重温基础】8.字符串
查看>>
关于MVP分层架构在项目中的实际运用
查看>>
Express和Koa的对比
查看>>
让数据库不再成为业务发展瓶颈——分布式数据库架构设计
查看>>
npm常用命令
查看>>
两级缓存实现分析之缓存设置
查看>>
Web Beacon 刷新/关闭页面之前发送请求
查看>>
确认过眼神(*╹▽╹*),这就是大家想要的BCH
查看>>
福布斯新闻顾问:比特币的设计缺陷制约比特币发展前景
查看>>
vue踩坑记录之:手机端查看vue项目与 listen EADDRNOTAVAIL报错
查看>>
前端性能优化--浏览器存储
查看>>
为什么要学习Python?学习Python可以做什么?
查看>>
测试工程师值得被尊重!是否有此共鸣!
查看>>
dubbo之SPI
查看>>
css3 绘制画圆、扇形
查看>>
Python抽象类
查看>>