动态规划 —— 路径问题-下降路径最小和

1. 下降路径最小和

题目链接:

931. 下降路径最小和 - 力扣(LeetCode)icon-default.png?t=O83Ahttps://leetcode.cn/problems/minimum-falling-path-sum/description/

 

 


2.  算法原理 

状态表示:以莫一个位置位置为结尾

   

dp[i,j]表示:到达[i,j]位置的时候,此时的最小下降路径

2. 状态转移方程

  

根据最近的一步来划分问题:

      

                                以最小的下降路径到达A位置,然后再走一步到达目的地 

到达dp[i][j]有三种情况:

                               1. 从左上方位置过来:[i-1,j-1] -> [i,j],dp[i-1,j-1] + m[i][j]

                                                                                                 (缩写为x)     

     

                               2. 从正上方位置过来:[i-1,j] -> [i,j],dp[i-1,j] + m[i][j]

                                                                                                 (缩写为y)

     

                               3. 从右上方位置过来:[i-1,j+1] -> [i,j],dp[i-1,j+1] + m[i][j]

                                                                                                    (缩写为z)

     

本题的状态转移方程是:dp[i][j] = min(x,y,z)+m[i][j]

3. 初始化 :把dp表填满不越界,让后面的填表可以顺利进行

   

我们可以在上面的一行和左边还有右边的一列再额外的加上一行和两列的虚拟节点

    

原始矩阵里第一行的值是不能被改变的,不然会影响到最终结果,所以第一行的虚拟节点应该全部初始化为0,而左右两列不能初始化为0,因为为0的话就可能会参与最小值的计算,会影响到最终结果,所以应该初始化为正无穷大

    

本题的下标映射关系:因为本题给了一个矩阵,而我们又额外的加上一行和两列的虚拟节点,所以我们的下标都统一往右下角移动了一位,如果想找回之前对应的位置,那么下标需要进行统一减1(横纵坐标)

4. 填表顺序 

    

本题的填表顺序是:从上往下填写每一行,每一行的值是从左往右

5. 返回值 :题目要求 + 状态表示    

    

本题的返回值是:最后一行里面的最小值


3.代码 

动态规划的固定四步骤:1.  创建一个dp表

                                        2. 在填表之前初始化

                                        3. 填表(填表方法:状态转移方程)

                                        4. 确定返回值 

class Solution {
public:
    int minFallingPathSum(vector<vector<int>>& matrix) {
        //本题是方形,所以不需要m
        int  n = matrix.size();

        //多加了一行两列,初始化先把虚拟节点都初始化为正无穷大
        vector<vector<int>>dp(n + 1, vector<int>(n + 2, INT_MAX));

        //将虚拟节点的第一行初始化为0
        for (int j = 0; j < n + 2; j++) dp[0][j] = 0;

        //额外的加上一行和两列的虚拟节点,所以从1开始
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
                //这里的matrix[i-1][j-1]也是加上一行和一列的虚拟节点,所以要横纵-1
                dp[i][j] = min(dp[i - 1][j - 1], min(dp[i - 1][j], dp[i - 1][j + 1]))
                + matrix[i - 1][j - 1];

        //返回最后一行里面的最小值
        //定义一个临时变量ret,不能将ret的的值定义为0,不然会影响到最终结果
        int ret = INT_MAX;
        for (int j = 1; j <= n; j++)
            ret = min(ret, dp[n][j]);//找到最后一行的最小和
        return ret;
    }
};


完结撒花~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905309.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型是怎么训练的 微调vsRAG

模型训练的关键 在理解提示工程、RAG和微调时&#xff0c;我们首先需明白大模型的训练依托于海量多样数据&#xff0c;使其具备跨领域的综合能力。以一个具体案例为例&#xff0c;当面对问题解答失败的情况时&#xff0c;需从三方面分析&#xff1a;一、提问者表述不清&#x…

SAP ABAP开发学习——第一代增强(包含增强演示)

​​​​​​SAP ABAP开发学习——第二代增强&#xff08;包含增强演示&#xff09;-CSDN博客 SAP ABAP开发学习——第三代增强&#xff08;BADI)-CSDN博客 概念 第一代增强(增强嵌入标准程序中) 第一代出口-User exit 以SD用户出口为例 SD及MM较多的程序都是基于源码控制来…

基础IO -- 标准错误输出stderr

目录 1&#xff09;为什么要有 fd 为 2 的 stderr 2&#xff09;使2和1重定向到一个文件中 这里我们谈一下以前只是了解过的stderr 通过两段代码&#xff0c;显然&#xff0c;我们可以知道两个FILE*都是指向显示器的 对于重定向&#xff0c;只有stdout才会将打印的数据重定向…

Cursor 写一个 Flutter Unsplash 壁纸工具 | 从零开始

Cursor 写一个 Flutter Unsplash 壁纸工具 | 从零开始 视频 https://space.bilibili.com/404904528/channel/collectiondetail?sid4106380 https://www.youtube.com/watch?v-ecvMPs5vN4&listPL274L1n86T835KIPMBSwWMy1At6XCJDVR 前言 原文 用Cursor和Flutter构建动态图…

十分钟Linux中的epoll机制

epoll机制 epoll是Linux内核提供的一种高效I/O事件通知机制&#xff0c;用于处理大量文件描述符的I/O操作。它适合高并发场景&#xff0c;如网络服务器、实时数据处理等&#xff0c;是select和poll的高效替代方案。 1. epoll的工作原理 epoll通过内核中的事件通知接口和文件…

【每日刷题】Day147

【每日刷题】Day147 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 神奇数_牛客笔试题_牛客网 2. DNA序列__牛客网 3. I-十字爆破_牛客小白月赛25 1. 神奇数_牛客笔…

干部出国境管理系统:规范管理,确保安全

在全球化的时代背景下&#xff0c;干部因工作需要或个人原因出国境的情况日益增多。为了加强对干部出国境的管理&#xff0c;确保干部出国境活动规范、有序、安全&#xff0c;干部出国境管理系统应运而生。 一、干部出国境管理系统的重要性 规范管理流程 干部出国境管理系统…

基于Qt的多线程并行和循序运行实验Demo

致谢&#xff08;Acknowledgement&#xff09;&#xff1a; 感谢Youtube博主Qt With Ketan与KDAB精心录制的Qt多线程处理应用教程&#xff0c;感谢Bilibili博主爱编程的大丙对Qt多线程与线程池内容深入浅出的讲解。 一、计算机线程相关概念 线程概念[1]&#xff1a; 在计算机科…

PyCharm专业版设置远程开发环境

以下是在PyCharm中设置远程开发环境的详细步骤&#xff1a; 没有专业版的在并夕夕上买 准备工作 确保本地已安装PyCharm专业版&#xff0c;因为社区版通常不支持远程开发功能。在远程服务器上安装好所需的Python版本以及相关的开发包和库&#xff0c;并且服务器需要开启SSH服务…

MySQL基础概念——针对实习面试

目录 MySQL基础什么是关系型数据库&#xff1f;什么是SQL&#xff1f;什么是ACID属性&#xff1f;什么是MySQL&#xff1f;MySQL为什么流行&#xff08;它的优点&#xff09;&#xff1f; 30秒读全文 MySQL基础 什么是关系型数据库&#xff1f; 关系型数据库&#xff08;Relat…

深入布局- grid布局

属性使用案例&#xff1a; 一、display 通过给元素设置&#xff1a;display:grid | inline-grid&#xff0c;可以让一个元素变成网格布局元素, display: grid&#xff1a;表示把元素定义为块级网格元素&#xff0c;单独占一行;&#xff08;如下图:&#xff09; display: inlin…

【力扣打卡系列】反转链表

坚持按题型打卡&刷&梳理力扣算法题系列&#xff0c;语言为go&#xff0c;Day12 反转链表 题目描述 解题思路 最开始的头节点为空&#xff0c;可以赋值为nil从前往后依次逆转下一个节点的指向即可 代码参考 /*** Definition for singly-linked list.* type ListNode s…

超越YOLO11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务

D-FINE 在 COCO 数据集上以 78 FPS 的速度取得了 59.3% 的平均精度 (AP)&#xff0c;远超 YOLOv10、YOLO11、RT-DETR v1/v2/v3 及 LW-DETR 等竞争对手&#xff0c;成为实时目标检测领域新的领跑者。目前&#xff0c;D-FINE 的所有代码、权重以及工具已开源&#xff0c;包含了详…

已解决:VS2022一直显示编译中但无法运行的情况

本问题已得到解决&#xff0c;请看以下小结&#xff1a; 关于《VS2022一直显示编译中但无法运行的情况》的解决方案 记录备注报错时间2024年报错版本VS2022报错复现突然VS2022不能启动&#xff0c;一直显示编译中&#xff0c;取消重试无效&#xff0c;重新生成解决方案无效报错…

UML图之对象图详解

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 零、什么是对象图 对象图&#xff08;Object Diagram&#xff09;是UML中一种重要的静态结构图&#xff0c;它用于表示在特定时间点上系统中的对…

微信支付宝小程序SEO优化的四大策略

在竞争激烈的小程序市场中&#xff0c;高搜索排名意味着更多的曝光机会和潜在用户。SEO即搜索引擎优化&#xff0c;对于小程序而言&#xff0c;主要指的是在微信小程序商店中提高搜索排名&#xff0c;从而增加曝光度和用户访问量。有助于小程序脱颖而出&#xff0c;提升品牌知名…

Java面试经典 150 题.P27. 移除元素(002)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public int removeElement(int[] nums, int…

新160个crackme - 088-[KFC]fish‘s CrackMe

运行分析 需破解用户名和RegKey PE分析 C程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 ida函数窗口逐个查看&#xff0c;找到关键函数sub_401440 ida无法动调&#xff0c;需使用OD&#xff0c;启用StrongOD插件才可以动调ida静态分析&#xff0c;逻辑如下&…

[Linux关键词]unmask,mv,dev/pts,stdin stdout stderr,echo

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;大大会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

你知道你的顾客长什么样儿吗 | 顾客画像的魅力

0139岁、亚裔、女性和 Costco 「一位 39 岁的亚裔女性&#xff0c;年收入可达到 12.5 万美金」&#xff0c;这是 Numerator 描绘的 Costco 2023 年的顾客画像。而一个典型的 Costco 会员每两周的周末会去一次 Costco&#xff08;约为每年前往Costco采买30次&#xff09;&…