【动态规划算法】第九题:64. 最小路径和

news2024/9/26 5:16:38

💖作者:小树苗渴望变成参天大树🎈
🎉作者宣言:认真写好每一篇博客💤
🎊作者gitee:gitee✨
💞作者专栏:C语言,数据结构初阶,Linux,C++ 动态规划算法🎄
请添加图片描述
如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!

文章目录

  • 前言


前言

今天我们来讲动态规划的第九题,这个题目和前面的有一题非常想,就是礼物最大价值这个问题,他两实际上就是相反的,其余的理解都是一样的,再初始化方面有一点不一样,我们一起来看看是一个什么样的题目吧


第九个题目是最小路径和:
在这里插入图片描述

我们发现这一类路径问题套路都是一样的,下篇再来一个关于路径的压轴题,他们的做题思路相差不大,这个题目意思非常好理解,我就补做具体介绍,我们直接用动态规划思想解题

动态规划的步骤给大家讲解:

  1. 状态表示:经验+题目要求
    以(i,j)位置为起点,dp[i][j]表示:到达(i,j)位置的最小路径和

  2. 状态转移方程:以最近一步的状态来算此状态
    在这里插入图片描述

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

  1. 初始化:抱枕该数组不越界,我们的第一行或者第一列都有可能越界,所以我们要多开辟一行和一列来创建虚拟节点,要保证后面的填表是正确的,下标的映射关系

在这里插入图片描述
4. 填表顺序:从上往下,从左往右
5. 返回值:(i,j)位置就是最小路径和,所以返回dp[m][n];

代码实现:

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int m = grid.size(), n = grid[0].size();
        //1.创建dp表
        vector<vector<int>> dp(m + 1, vector<int>(n + 1, INT_MAX));
        
        //2.初始化
        dp[0][1] = dp[1][0] = 0;
        //3.填表
        for(int i = 1; i <= m; i++)
            for(int j = 1; j <= n; j++)
                dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i - 1][j - 1];
        //4.返回值
        return dp[m][n];
    }
};

运行结果:
在这里插入图片描述

这题有了前面题目的基础后,就是逻辑发生了一点变化,所以难度不大,大家自己应该也可以写出来,下个题目,就是路径问题的最后一个题目了,难度肯定有所提升,希望大家迎接新题目的挑战,我们下题再见
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Todo-List案例版本一

初级使用e.target.value 记得安装npm i nanoid与UUID类似 快捷键ctrlH替换内容 src/components/MyHeader.vue <template><div class"todo-header"><input type"text" placeholder"请输入你的任务名称&#xff0c;按回车键确认&quo…

express框架中使用ejs

1.设置模块引擎为ejs app.set("view engine","ejs") 2. 设置模版文件存放位置 说明&#xff1a;模版文件&#xff1a;具有模版语法内容的文件。 app.set(vies,path.resolve(__dirname,"./views")) 3.render渲染 app.get(/home,(req,res)>{/…

MySQL第三天(简单单表查询)

前言 今天的三个题目是针对于单表查询和多表查询的课后作业&#xff0c;针对于初学者还是很合适的听有用处的&#xff0c;我会把我的答题过程一步一步写出来&#xff0c;有需要的小伙伴可以参考哦… 第一题、单表信息查询 题目代码如下&#xff1a; 作业&#xff1a;1.创建表…

【计算机组成原理总结】

第一章计算机系统概述 第二章数据的表示与运算 第三章存储系统 第四章 指令系统 第五章 中央处理器 第六章 总线 第七章 输入输出设备

Mac如何在终端使用diskutil命令装载和卸载推出外接硬盘

最近用 macOS 装载外接硬盘的时候&#xff0c;使用mount死活装不上&#xff0c;很多文章也没详细的讲各种情况&#xff0c;所以就写一篇博客来记录一下。 如何装载和卸载硬盘&#xff08;或者说分区&#xff09; mount和umount是在 macOS 上是不能用的&#xff0c;如果使用会…

Clickhouse入门(一)

第一章 Clickhouse简介 ClickHouse (C编写)是俄罗斯的Yandex(相当于百度)于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用SQL查询实时生成分析数据…

电脑各配置跟不上,造成频繁花屏。

本人用的是i3 7350K&#xff0c;然而散热器是二十多块的杂牌&#xff0c;CPU温度经常不稳定&#xff0c;可以在监控软件看到比较详细的情况&#xff0c;然后我的显卡是gtx1080&#xff0c;内存加到双条24G。 最近一直花屏&#xff0c;我甚至怀疑是不是显卡坏了&#xff0c;然后…

特征选择算法 | Matlab 基于最大互信息系数特征选择算法(MIC)的回归数据特征选择

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 特征选择算法 | Matlab 基于最大互信息系数特征选择算法(MIC)的回归数据特征选择 部分源码 %--------------------

css 字体间距 设置

一、css word-spacing属性设置字间距&#xff08;单词的间距&#xff09; word-spacing 属性增加或减少单词间的空白&#xff08;即字间隔&#xff09;&#xff1b;在这个属性中&#xff0c;“字” 定义为由空白符包围的一个字符串。也就是说该属性是以空格为基准进行调节间距…

【一】PCIe基础知识

一、PCIe概述 1、PCIe速度 PCI采用总线共享式通讯方式&#xff1b;PCIe采用点到点(Endpoint to Endpoint)通讯方式&#xff0c;互为接收端和发送端&#xff0c;全双工&#xff0c;基于数据包传输&#xff1b;两个PCIe设备之间的连接称作一条链路(link)&#xff0c; 一条链路可…

Nginx报跨域问题怎么解决

这就是报错信息&#xff0c;可以看出这里是一个请求发送了两次&#xff0c;这是什么原因呢&#xff1f; 这种请求是因为它是applocayion/json格式的请求&#xff0c;在请求一个资源的时候&#xff0c;先会发送一个预检请求&#xff0c;然后才会发送真正的请求&#xff0c;那为…

桥接模式:如何实现支持不同类型和渠道的消息推送系统?

上一节课我们学习了第一种结构型模式&#xff1a;代理模式。它在不改变原始类&#xff08;或者叫被代理类&#xff09;代码的情况下&#xff0c;通过引入代理类来给原始类附加功能。代理模式在平时的开发经常被用到&#xff0c;常用在业务系统中开发一些非功能性需求&#xff0…

Web前端 Day 2

元素显示模式 块元素 独占一行 宽、高、内外边距可以设置 eg. div 行内元素 一行可以存在多个 eg. span 行内块元素 一行可以存在多个 宽、高、内外边距可以设置 是否独占一行 表格标签 <table> <caption></caption> 表格标题&#xff08;概括&#…

手把手的教你安装PyCharm --Pycharm安装详细教程(一)(非常详细,非常实用)

简介 Jetbrains家族和Pycharm版本划分&#xff1a; pycharm是Jetbrains家族中的一个明星产品&#xff0c;Jetbrains开发了许多好用的编辑器&#xff0c;包括Java编辑器&#xff08;IntelliJ IDEA&#xff09;、JavaScript编辑器&#xff08;WebStorm&#xff09;、PHP编辑器&…

面向对象编程主线一

面向对象编程 一、Java面向对象学习的三条主线 Java类及类的成员&#xff1a;属性、方法、构造器&#xff1b;代码块、内部类面向对象的三大特征&#xff1a;封装性、继承性、多态性、&#xff08;抽象性&#xff09;其他关键字&#xff1a;this、super、static、final、abst…

分治法求最近点对问题

目录 蛮力法 分治法 探究分治规模小于一定程度时采用暴力解法 蛮力法 算法思想 蛮力法&#xff0c;顾名思义&#xff0c;即穷举所有点与点之间的距离&#xff0c;两层循环暴力找出最近点对。算法执行可视化如图1所示&#xff0c;word文档GIF静态显示&#xff0c;附件已含动…

BTY Carnival - Task2 | Get the OG Role Win USDT

欢迎来到比特元社区&#xff01; 比特元是一条兼具平行链与零知识证明技术的EVM兼容区块链。BitYuan的生态系统dns.bityuan.com即将开放公测。用户完成任务即获得白名单资格&#xff0c;可进入到DC群的DNS白名单频道 &#xff0c;我们将定期开展抽BTY等活动&#xff0c;并且将…

2022年第十三届JAVA B组国赛

文章目录 A.重合次数&#xff08;模拟&#xff09;B.数数&#xff08;数学&#xff09; A.重合次数&#xff08;模拟&#xff09; Answer:494 这个题目比较坑人&#xff0c; public class Main {static BufferedReader br new BufferedReader(new InputStreamReader(System.…

多元回归预测 | Matlab阿基米德算法(AOA)优化极限梯度提升树XGBoost回归预测,AOA-XGBoost回归预测模型,多变输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 阿基米德算法(AOA)优化极限梯度提升树XGBoost回归预测,AOA-XGBoost回归预测模型,多变输入模型,多变量输入模型,多变量输入模型,matlab代码回归预测,多变量输入模型,多变量输入模型 评价指标包括:MAE、RMSE和R2…

一文3000字从0到1带你进行Mock测试(建议收藏)

​什么是mock&#xff1f; ​mock测试是以可控的方式模拟真实的对象行为。程序员通常创造模拟对象来测试对象本身该具备的行为&#xff0c;很类似汽车设计者使用碰撞测试假人来模拟车辆碰撞中人的动态行为 为什么要使用Mock&#xff1f; 之所以使用mock测试&#xff0c;是因…