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

动态规划-931.下降路径最小和-力扣(LeetCode)

一、题目解析

从最顶上出发,有三个位置选择,左中下(边界除外),使其走到最下面时下降路径最小。

二、算法原理

1、状态表示

我们需要的是到达[i,j]的最小路径和,所以此时dp[i][j]表示:到达[i,j]位置时,最小的下降路径

2、状态转移方程

对于某个位置有三种下降方式,自然也就有三种到达该位置的方式

 

dp[i][j]  从[i-1,j-1]->[i,j]->dp[i-1][i-1]+matrix[i][j]

           从[i-1,j]->[i,j]->dp[i-1][j]+matrix[i][j]

           从[i-1][j+1]->[i,j]->dp[i-1][j+1]+matrix[i][j]

dp[i][j]=min(dp[i-1][j-1]+matrix[i][j],min(dp[i-1][j]+matrix[i][j],dp[i-1][j+1]+matrix[i][j]))

3、初始化

 

除了最上面一排初始化为0,其余位置要初始化为最大值,由于min的原因,如果都初始化为0,则会计算出错

4、填表顺序

从上往下,从左往右

5、返回值

由于到达最下面就停止了,所以取最后一排的最小值

自己动手实现一下吧,链接:931. 下降路径最小和 - 力扣(LeetCode) 

三、代码示例

class Solution {
public:int minFallingPathSum(vector<vector<int>>& matrix) {int n = matrix.size();vector<vector<int>> dp(n+1,vector<int>(n+2,INT_MAX));for(int j = 0;j<n+2;j++) dp[0][j] = 0;for(int i = 1;i<=n;i++){for(int j = 1;j<=n;j++){dp[i][j] = min(dp[i-1][j-1],min(dp[i-1][j],dp[i-1][j+1])) + matrix[i-1][j-1];}}int ret = INT_MAX;for(int j = 1;j<=n;j++) ret = min(ret,dp[n][j]);return ret;}
};

 

 

看到最后,如果对您有所帮助,还请点赞、收藏和关注,点点关注不迷路,我们下期再见! 

相关文章:

  • 高端装备制造企业如何选择适配的项目管理系统提升项目执行效率?附选型案例
  • 制造企业生产数据分析全解析:5大类数据定义、分析方法与落地指南
  • 阿里通义实验室突破空间音频新纪元!OmniAudio让360°全景视频“声”临其境
  • 制造企业搭建AI智能生产线怎么部署?
  • C++:栈帧、命名空间、引用
  • 人工智能浪潮下,制造企业如何借力DeepSeek实现数字化转型?
  • 学习黑客小故事理解 Metasploit 的 Meterpreter
  • 酷派Cool20/20S/30/40手机安装Play商店-谷歌三件套-GMS方法
  • NUMA 架构科普:双路 CPU 系统是如何构建的?
  • 如何给老旧 iOS App 添加安全保护?用 Ipa Guard 对 IPA 文件混淆加固实录
  • ComfyUI+阿里Wan2.1+内网穿透技术:本地AI视频生成系统搭建实战
  • WebVm:无需安装,一款可以在浏览器运行的 Linux 来了
  • 本地部署大模型llm+RAG向量检索问答系统 deepseek chatgpt
  • SpringBoot(五)--- 异常处理、JWT令牌、拦截技术
  • json转成yolo用的txt(json中没有宽高,需要自设宽高的)
  • VMware ESXi网络配置
  • Learning Discriminative Data Fitting Functions for Blind Image Deblurring论文阅读
  • dto vo类为什么要序列化?
  • 跨架构镜像打包问题及解决方案
  • Odoo 打印功能架构与工作流程深度剖析
  • 怎样做网站搜索推广/河池网站seo
  • 正规的佛山网站建设价格/自己建网站怎么弄
  • 佛山市住房和城乡建设局网站/培训机构最新消息
  • 网站开发工资一般多少/天津seo排名收费
  • 优质外贸网站/seo168小视频
  • 广州网站建设吧/厦门seo招聘