当前位置: 首页 > news >正文

【动态规划】下降路径最小和 C++

下降路径最小和(难度:中等)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

该题对应力扣网址

思路

题目中提到:
位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)、(row + 1, col) 或者 (row + 1, col + 1)

那么当我们反推的时候,dp[i][j]是由它的左上方,正上方,右上方的数字决定的,即dp[i-1][j-1],dp[i-i][j],dp[i-1][j+1]

每次从这三个位置的数据找最小的,这样就能确保,当下降到最后一行的时候,存储的路径和是最小的。

AC代码

class Solution {
public:int minFallingPathSum(vector<vector<int>>& matrix) {int m = matrix.size();int n = matrix[m-1].size();vector <vector<int>> dp (m, vector<int>(n));int result=INT_MAX;//用dp[0][0]初始化matrix[0]这一行的所有值copy(matrix[0].begin(),matrix[0].end(),dp[0].begin());int num1;int num3;for(int i=1;i<m;i++){for(int j=0;j<n;j++){num1=INT_MAX;num3=INT_MAX;if(j>0){num1=dp[i-1][j-1]+matrix[i][j];}int num2=dp[i-1][j]+matrix[i][j];if((j+1)<n){num3=dp[i-1][j+1]+matrix[i][j];}int temp;result=min({num1,num2,num3});dp[i][j]=result;}}return *min_element(dp[n-1].begin(),dp[n-1].end());}
};

补充:新的代码用法

*min_element()函数可以直接返回一个一维数组中最小值

return *min_element(dp[n-1].begin(),dp[n-1].end());

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 互联网全景消息(5)之RocketMq快速入门(下)
  • DHCP协议原理(网络协议)
  • Appium高级话题:混合应用与原生应用测试策略
  • js中箭头函数与普通函数的区别
  • idea 恢复 pom 文件呈现灰色并带删除线
  • 将Java程序打包成EXE程序
  • 【云原生安全篇】一文掌握Harbor集成Trivy应用实践
  • 重头开始嵌入式第四十一天(数据结构 树 哈希表)
  • 【图像拼接】基于SIFT/SURF特征算法的图像拼接,matlab实现
  • 图分类!!!
  • Linux——应用层自定义协议与序列化
  • uniapp中使用picker-view选择时间
  • HTTP 协议格式大揭秘:Fiddler 助阵,网络交互全掌握!
  • 如何使用 Python 发送带附件的电子邮件
  • 阿里云AI基础设施全面升级,模型算力利用率提升超20%
  • 30天自制操作系统-2
  • Apache Spark Streaming 使用实例
  • ECS应用管理最佳实践
  • es的写入过程
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • export和import的用法总结
  • git 常用命令
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • javascript 哈希表
  • JavaScript服务器推送技术之 WebSocket
  • Python socket服务器端、客户端传送信息
  • Swift 中的尾递归和蹦床
  • web标准化(下)
  • 创建一个Struts2项目maven 方式
  • 从零开始的无人驾驶 1
  • 从重复到重用
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 飞驰在Mesos的涡轮引擎上
  • 前端设计模式
  • 使用API自动生成工具优化前端工作流
  • 数据结构java版之冒泡排序及优化
  • 微服务入门【系列视频课程】
  • 学习笔记:对象,原型和继承(1)
  • 关于Android全面屏虚拟导航栏的适配总结
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #define、const、typedef的差别
  • #pragma data_seg 共享数据区(转)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $ git push -u origin master 推送到远程库出错
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (3) cmake编译多个cpp文件
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (HAL库版)freeRTOS移植STMF103
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (第8天)保姆级 PL/SQL Developer 安装与配置