【动态规划算法】第七题: 剑指Offer47.礼物的最⼤价值

news2024/11/16 9:22:23

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

文章目录

  • 前言


前言

hello,大家好,今天又来更新动态规划的题目了,今天讲的题目在以前的基础上变了一个花样,总体就在状态转移方程的时候有了一点变化,接下来我们开始进入正文进行讲解


第七个题目是礼物的最大价值
在这里插入图片描述

这个题目讲的非常明确,我就不给大家画图解了,这题传的参数也是一个二维矩阵,所以一会再写的时候要注意下标的映射关系

接下来用动态规划的步骤给大家讲解:

  1. 状态表示:经验+题目要求
    以(i,j)位置为终点,dp[i][j]表示:到达(i,j)位置时礼物的最大价值
  2. 状态转移方程:以最近的状态算出此状态
    在这里插入图片描述
    所以dp[i][j]就是两种情况的最大值max(dp[i-1][j]+g[i][j],dp[i][j-1]+g[i][j])
  3. 初始化:保证数组不越界,我们的第一行和第一列是从上面或者左边过来的,可能越界,所以还是按照前面的处理边界及初始化问题,构造出虚拟节点

在这里插入图片描述
4. 填表顺序:从上往下填每一行,每一行从左往右
5. 返回值:dp[m][n]
代码实现:

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

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

这道题也是博主自己写出来的,总结前面的经验,就很容易写出来,重要的是掌握方法,那我们今天就先说到这里,我们下题再见
请添加图片描述

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

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

相关文章

《世界上最伟大的推销员》 - 经典语录与 AIGC解析

文章大纲 第一卷 全新的我第二卷 爱在今天第三卷 坚持到底第四卷 我是奇迹第五卷 最后一天第六卷 控制情绪第七卷 笑遍世界第八卷 提升价值第九卷 立即行动第十卷 我的祈祷 第一卷 全新的我 经典语录 ★ 世界上没有绝望的处境&#xff0c;只有对处境绝望的人。 ★ 怕苦的人苦一…

Redis 从入门到精通【进阶篇】之Redis事务详解

文章目录 0.前言1.Redis 事务基本流程 1.事务详解1.1. 开始事务1.2. 命令入队1.3. 执行事务1.6. 带 WATCH 的事务1.7. WATCH 命令的实现1.8. WATCH 的触发1.9. 事务的 ACID 性质 2.总结2.1. 在事务和非事务状态下2.2. 小结2.3. 为什么Redis 的事务并不是真正的原子操作2.4. 为什…

TCP连接管理(三次握手,四次挥手)

目录 一、回顾一下TCP包头二、连接的建立——“三次握手”三、连接的建立——“四次挥手”保活计时器 一、回顾一下TCP包头 源端口号&#xff08;Source Port&#xff09;&#xff1a;16 位字段&#xff0c;表示发送方的端口号。 目的端口号&#xff08;Destination Port&…

【机器学习核心总结】什么是决策树

什么是决策树 在游戏中遇到敌人是选择攻击还是逃跑&#xff1f;如果选择攻击&#xff0c;是选择普通的物理攻击还是魔法攻击&#xff1f;为达到目标根据一定的条件进行选择的过程&#xff0c;就是决策树(DT Tree)。 决策树模型非常经典&#xff0c;在机器学习中常被用于分类&…

2.3 Web应用 -- 5. Web缓存/代理服务器技术

2.3 Web应用 -- 5. Web缓存/代理服务器技术 Web缓存/代理服务器技术条件性GET方法 Web缓存/代理服务器技术 功能 在不访问服务器的前提下满足客户端的HTTP请求。 为什么要发明这种技术&#xff1f; 缩短客户请求的响应时间减少机构/组织的流量在大范围内(Internet)实现有效的内…

【小沐学C++】libcurl实现HTTP/HTTPS请求

文章目录 1、简介2、下载和编译2.1 下载2.2 编译2.3 使用 3、命令行测试3.1 获取文件头Headers3.2 请求内容Request Content3.3 响应内容Response Content3.4 GET请求3.5 POST请求3.6 其他 4、代码测试3.1 simple.c3.2 url2file.c3.3 simplepost.c3.4 resolve.c3.5 progressfun…

Docker中部署Redis集群与部署微服务项目的详细过程

目录 一、使用Docker部署的好处二、Docker 与 Kubernetes 对比三、Redis集群部署实战四、Spring Boot项目 打包镜像?小结 一、使用Docker部署的好处 Docker的好处在于&#xff1a;在不同实例上运行相同的容器 Docker的五大优点&#xff1a; 持续部署与测试、多云服务平台支…

一、枚举类型——新特性(模式匹配-支配性)

switch 中 case 语句的顺序很重要。如果基类先出现&#xff0c;就会支配任何出现在后面的 case&#xff1a; Dominance.java JDK 17 sealed interface Base { }record Derived() implements Base { }public class Dominance {static String test(Base base) {return switch (ba…

稳扎稳打学爬虫09—chromedriver下载与安装方法

chromedriver下载与安装方法 1. 获取chromedriver.exe2. 将chromedriver.exe 应用程序复制到浏览器的安装目录下3. 将chromedriver.exe 应用程序复制到python安装目录下4.进行测试5.有可能的报错 1. 获取chromedriver.exe http://chromedriver.storage.googleapis.com/index.h…

SpringBoot整合shiro项目完成认证功能

springboot整合shiro完成认证功能 一、准备阶段&#x1f95d; 1.创建springboot工程&#x1f353; 2.引入依赖&#x1f353; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi&…

Visual Studio Code 编辑器实用插件简介

Visual Studio Code 编辑器插件 以下是一些常用的 Visual Studio Code 编辑器插件及其简短描述&#xff1a; 2gua.rainbow-brackets&#xff1a;在括号周围添加彩虹色的边框&#xff0c;以帮助区分不同层次的括号。adpyke.codesnap&#xff1a;将代码片段转换为漂亮的图片&am…

第66篇:顶级APT后门Sunburst通信流量全过程复盘分析(修正篇)

Part1 前言 由于先前文章存在部分错误&#xff0c;原文ABC_123已删除&#xff0c;上周末把文章修正&#xff0c;重新发布。 大家好&#xff0c;我是ABC_123。前面几周分享了Solarwinds供应链攻击事件的详细攻击流程及Sunburst后门的设计思路&#xff0c;但是多数朋友还是对Sun…

各种软件的启动界面(SplashScreen)修改汇总

最近装了新电脑&#xff0c;搞了一波萌化&#xff0c;顺便把我常用软件的启动界面也给换了&#xff0c;包括adobe全家桶、UE、3dsMax、Maya、JB家的几个&#xff0c;&#xff08;Office想换没换成功&#xff0c;找了很久没找到方法&#xff0c;不知道有没大佬知道&#xff09; …

在阿里云上部署Springboot项目

文章目录 环境准备1.安装jdk2.安装mysql3.开启端口 上传项目1.数据库上传2.项目上传 环境准备 1.安装jdk 查看系统中原来是否含有java环境 rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj其中&#xff0c;gcj是一个轻巧的&#xff0c;性能优越的Java语言编译器。它…

SpringSecurityOAuth2 中 Miss grant type问题

SpringSecurityOAuth2 登录传值的时候会出现 Miss grant type问题 没有设置content-type问题 Content-Type: application/x-www-form-urlencoded 解决

timingPath/set_data_check和set_max_delay/set_multicycle_path

目录 0.timing path 1.set_data_check 1.1set_data_clk约束cdc path 1.2 set_data_check和set_max_delay区别和使用场景 2.set_mulicycle_path 0.timing path timing path的概念&#xff1a; start和end不只是reg的CP和REG的D pin 还可以是mem的D/Qpin和 port port--&…

大模型AI时代哪类人相对更「安全」

最近随着人工智能技术的发展&#xff0c;越来越多的工作被AI智能自动化取代&#xff0c;这导致了许多人失去了TA们的工作。这些人被视为首批因人工智能失业的人。虽然这些人的失业是非常令人遗憾的&#xff0c;但是我们可以从中获得一些启示&#xff0c;以应对未来可能出现的类…

颠覆你的认知,不用开通Plus会员也可以使用ChatGPT的插件功能(兼容3.5)

在看到这篇文章之前&#xff0c;你可能以为只有GPT4.0才能使用插件。但事实上&#xff0c;早就有人基于3.5开发了一套完整的插件体系了&#xff0c;不但可以使用插件&#xff0c;还可以自己开发插件。插件使用的就是JavaScript语法&#xff0c;开发起来可以说是相当简单了。 注…

excel中函数vlookup使用方法

1、VLOOKUP函数是Excel中的一个纵向查找函数&#xff0c;它与 LOOKUP函数和 HLOOKUP函数属于一类函数&#xff0c;在工作中都有广泛应用。VLOOKUP是按列查找&#xff0c;最终返回该列所需查询列序所对应的值&#xff1b;与之对应的HLOOKUP是按行查找的。接下来以5位同学成绩表为…

路径规划算法:基于吉萨金字塔建造优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于吉萨金字塔建造优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于吉萨金字塔建造优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍…