动态规划:07.路径问题_珠宝的最大价值_C++

news2024/9/21 5:41:15

题目链接:LCR 166. 珠宝的最高价值 - 力扣(LeetCode)icon-default.png?t=O83Ahttps://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/description/

一、题目解析

题目:

解析:

有过做前几道题的经验,我们会发现这道题其实就是最短路径问题,只不过变成了最“长”路径,我们有多种方式到达右下角,但是我们要求到达=右下角的同时,珠宝价值也最大

二、算法原理

1、状态表示

我们在状态标识的时候,一般都会创建一个数组dp,也就是我们所说的dp表,我们要做的就是把每一个状态的值填入这个表内,最终这个表内的某一个值可能就是我们要返回的值。 

  状态简单理解就是dp表内某一个值代表的含义。

如何确定状态表示

  • 题目要求

   简单的题目里一般会给出

  • 经验+题目要求

  越学越深入,动态规划也是熟能生巧,在题目中没有明显给出的时候,我们就要凭借自己做题的经验来确定,所以就需要我们大量的做题。

  • 分析问题的过程中,发现重复子问题

 分析问题的过程中把重复子问题抽象成我们的状态表示,这个更难理解,一切的基础都是我们先对动态规划算法熟练运用。我也不懂,我们慢慢来。

综上:我们通常会以一个位置为结尾或者开始求得我们想要的答案

那我们的这道题得状态表示是什么样的:

根据经验:我们以为一个位置为结尾做题

dp[i][j]状态表示:到达位置(i,j)时,珠宝价值最大

2、状态转移方程

 确定状态表示之后我们就可以根据状态标识推出状态转移方程

  状态转移方程是什么?

不讲什么复杂的,简单来说状态转移方程就是    dp[i][j]等于什么 dp[i][j]=?

  这个就是状态转移方程,我们要做的,就是推出dp[i][j]等于什么

  我们根据状态表示再结合题目+经验去推理转移方程,这一步也是我们整个解题过程中最难的一步

  我们在这道题先简单了解下什么是状态转移方程,之后比较难的题目再细推

  我们知道,我们每次直能向下或者向右走,此时dp表示到达(i,j)该位置时珠宝价值达到最大,那么就是我们向下或者向右到达(i,j)位置后价值达到最大,既然要求最大,(i,j)位置的价值也不会影响,那我们就要要求到达(i-1,j)或者(i,j-1)的珠宝价值达到最大,并且只能选其中最大的那一个

我们再画图可以看出,我们选出到达(i,j)位置之前的最大价值dp[i-1][j]或者dp[i][j-1],再加上本身价值,就是到达(i,j)位置的最大价值

状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i][j-1])+(i,j)的本身价值

3、初始化

 我们创建dp表就是为了把他填满,我们初始化是为了防止在填表的过程中越界

怎么谈越界?

  比如我们在求dp[0][0]时,我们就需要知道dp[-1][0]或者dp[0][-1]的值,但是我们没有这两个位置,就会造成越界。

 不仅仅是第一个位置,我们的第一行和第一列,都存在所要位置的价值最大值不存在问题

 所以我们在创建dp表时,我们需要额外增加一行一列,这样我们的越界问题就解决了

 另外,我们为了让新增的行列元素值不影响填表,我们应该把他们初始化为0

  

4、填表顺序

从左到右,从上到下依次填表,这样能保证我们填表时其它的值都有

5、返回值

返回dp表右下角的值

三、编写代码

class Solution {
public:
    int jewelleryValue(vector<vector<int>>& frame) {
        int m=frame.size(),n=frame[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],dp[i][j-1])+frame[i-1][j-1];
            }
        }
        return dp[m][n];
    }
};

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

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

相关文章

OpenAI o1——人工智能推理能力的飞跃,助力高级问题解决

前言 开放人工智能 新模型&#xff0c; OpenAI o1 或草莓&#xff0c;代表了 人工智能。它以 OpenAI 的 GPT 系列等先前模型为基础&#xff0c;并引入了增强的推理能力&#xff0c;从而加深了科学、编码和数学等各个领域的问题解决能力。与主要擅长处理和生成文本的前辈不同&a…

如何在win10Docker安装Mysql数据库?

1.拉取镜像 docker pull mysql 2.查看镜像 使用以下命令来查看是否已安装了 mysql镜像。 3.运行镜像 命令&#xff1a; docker run -p 3306:3306 --name mysql --restartalways --privilegedtrue \ -v /usr/local/mysql/log:/var/log/mysql \ -v /usr/local/mysql/data:/var…

AE电源HPG13150 400V Generator 手侧

AE电源HPG13150 400V Generator 手侧

【模板代码的组织结构与模板的显式实例化和声明】模板代码的组织结构与模板的显式实例化和声明

一、模板的组织结构 之前对于模板&#xff0c;我们都是写在同一个 . c p p .cpp .cpp文件下&#xff0c;那如果我们将模板分开&#xff0c;单独开一个 . h .h .h和 . c p p .cpp .cpp来创建模板&#xff0c;会发生什么&#xff1f; 首先&#xff0c;我们创建一个 m y c l a s…

适合骑行的开放式耳机哪个品牌好?四款开放式蓝牙耳机推荐

骑行时是否有必要佩戴耳机是一个需要权衡安全与便利的问题。因为虽然耳机能提供音乐、导航等功能&#xff0c;但也可能分散注意力&#xff0c;影响骑行安全。而且这也是需要看个人需求决定的&#xff0c;骑行戴耳机的需求是什么&#xff0c;我想大部分人应该就是为了接听电话&a…

大端存储与小端存储的存储方式

目录 1.小端存储方式的解释 2.大端存储方式的解释 3.百度笔试题--判断大端存储还是小端存储 小心&#xff01;VS2022不可直接接触&#xff0c;否则&#xff01;没这个必要&#xff0c;方源面色淡然一把抓住&#xff01;顷刻炼化&#xff01; 1.小端存储方式的解释 小端存储…

DeDeCMS靶场漏洞复现

打开靶场地址 姿势一&#xff1a;通过文件管理器上传webshell 1.登录后台 dedecms默认的后台登录地址为/dede 2.在附加管理里的文件式管理器中有文件上传 3.上传木马文件 4.访问木马文件 并连接 姿势二&#xff1a;修改模板文件获取webshell 1.点击模板里面的默认模板管理 …

【2025】智慧居家养老服务平台的设计与实现、基于AI的居家养老服务平台、居家养老服务平台开发、智慧养老服务平台设计

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

CAS 和 synchronized 的优化过程

&#x1f349; 目录 CAS 的实现 CAS 的工作原理 优化过程 CAS 的应用 1) 实现原子类 2&#xff09;实现自旋锁 CAS 的 ABA 问题 synchronized 的 原理 synchronized 基本特点 加锁工作过程 其他优化操作 1. 锁消除 2. 锁粗化 CAS&#xff08;Compare-And-Swap&…

反编译 AndroidManifest.xml文件-android反编译技术

一、安卓打包后目录 想要查看原来版本配置和关联信息&#xff0c;被打包了&#xff0c;这时候需要工具 AXMLPrinter2.jar 二、反编译环境要求 序号软件说明1java电脑得有java环境2AXMLPrinter2.jarapk中xml解析文件 三、反编译指令 java -jar AXMLPrinter2.jar "C:\Us…

腾讯百度阿里华为常见算法面试题TOP100(4):双指针、哈希、滑动窗口

之前总结过字节跳动TOP50算法面试题&#xff1a; 字节跳动常见算法面试题top50整理_沉迷单车的追风少年-CSDN博客_字节算法面试题 目录 双指针 42.接雨水 283.移动零 11.盛最多水的容器 15.三数之和 哈希 1. 两数之和 49.字母异位词分组 128.最长连续序列 滑动窗…

2024 RSTCONCTF re 部分wp

Unknown Architect DIE查看&#xff0c;RISC_V架构&#xff0c;直接交即可 Duke of the Kingdom 附件拖入jadx 比较简单。脚本 Keypad 附件拖入ida。一共四遍check&#xff0c;都比较简单 Pico-Cypher 文本编辑器打开附件 稍微问一问gpt&#xff0c;得知这是micropython&#x…

数据驱动型营销与开源 AI 智能名片 O2O 商城系统的融合发展

摘要&#xff1a;本文探讨了数据驱动型营销在现代商业中的重要性&#xff0c;阐述了其在消费者管理和产品管理方面的作用。同时&#xff0c;引入“开源 AI 智能名片 O2O 商城系统”&#xff0c;分析其如何与数据驱动型营销相结合&#xff0c;为企业提供更精准的营销决策和更高效…

【Matlab 肌电信号分析】

一、数据预处理 1.1 数据读取 使用matlab从rhd文件中读取原始数据&#xff0c;共64个通道。 1.2 数据滤波 使用 60Hz的Notch filter 和150Hz的高通Butterworth滤波器进行降噪 二、波峰提取 > 每个通道分别根据相应的规则提取出波峰、波谷附近的波形。 三、信号聚类 3.1 降…

win7桌面显示我的电脑,控制面板等

win7桌面显示我的电脑&#xff0c;控制面板等 点击windows图标&#xff0c;一般左下角 右键计算机 选择在桌面显示即可&#xff0c;控制面板也是一样的操作

可自动完成固化、繁琐、重复的工作流程,提高工作效率的智慧快消开源了

智慧快消视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。国产化人工智能“…

1.4 计算机网络的性能指标

欢迎大家订阅【计算机网络】学习专栏&#xff0c;开启你的计算机网络学习之旅&#xff01; 文章目录 前言一、速率二、带宽三、吞吐量四、时延五、时延带宽积六、往返时延&#xff08;RTT&#xff09;七、利用率 前言 计算机网络的性能指标是评估网络效率和效果的关键&#xf…

React学习day07-ReactRouter-抽象路由模块、路由导航、路由导航传参、嵌套路由、默认二级路由的设置、两种路由模式

14、ReactRouter续 &#xff08;2&#xff09;抽象路由模块 1&#xff09;新建page文件夹&#xff0c;存放组件 组件内容&#xff1a; 2&#xff09;新建router文件夹&#xff0c;在其下创建实例 3&#xff09;实例导入&#xff0c;使用 4&#xff09;效果 &#xff08;3&…

CAD图纸加密软件哪个好?10款2024主流CAD图纸加密软件分享!

随着信息安全意识的增强&#xff0c;特别是在工程设计、建筑和制造等领域&#xff0c;保护CAD图纸的安全成为一项重要任务。选择合适的CAD图纸加密软件不仅能确保数据安全&#xff0c;还能提高企业的合规性。以下是2024年主流的10款CAD图纸加密软件&#xff0c;每款软件均有独特…

floodfill算法(二)

目录 一、太平洋大西洋水流问题 1. 题目链接&#xff1a;417. 太平洋大西洋水流问题 2. 题目描述&#xff1a; 3. 解法 &#x1f334;算法思路&#xff1a; &#x1f334;算法代码&#xff1a; 二、扫雷游戏 1. 题目链接&#xff1a;529. 扫雷游戏 2. 题目描述&#xf…