【学会动态规划】删除并获得点数(13)

news2024/10/5 22:39:02

目录

动态规划怎么学?

1. 题目解析

2. 算法原理

1. 状态表示

2. 状态转移方程

3. 初始化

4. 填表顺序

5. 返回值

3. 代码编写

写在最后:


动态规划怎么学?

学习一个算法没有捷径,更何况是学习动态规划,

跟我一起刷动态规划算法题,一起学会动态规划!

1. 题目解析

题目链接:740. 删除并获得点数 - 力扣(Leetcode)

这道题比较抽象,我就拿他给的样例举例子吧,

如果选择 3,就需要把 4 和 2 都删除,那么点数就是 3

如果选择 2,就需要把 1 和 3 都删除,那么继续选择 4 ,需要把 3 和 5 删除,

最后点数加在一起就是 2 + 4 = 6,最大点数是 6 所以返回 6。

同理,第二个示例:

还是两种情况,选 2,4,或者选 3。 

注意是选择一个数之后,这数 + 1 和 - 1 就会被删除。

实际上,这道题如果直接做的话并不好做,

我们可以对他进行一些预处理的操作,来转化成我们熟悉的问题:

这里我还是用题目给的示例演示:

我们通过下标对应点数的形式,转化出一个新数组:

 比如说,原数组从 2 开始,那点数数组下标为 2 的位置就是点数 2 + 2 = 4,

然后下标为 3 的位置点数就是 3 + 3 = 6,下标为 4 的位置点数就是 4 。

这样做,就能把这个问题转化成打家劫舍的问题了:相邻的下标不能同时选择。

2. 算法原理

1. 状态表示

然后这个问题就有两种情况,:

f [ i ] 表示选到 i 位置的时候,nums[ i ] 选,此时能得到的最大点数

g [ i ] 表示选到 i 位置的时候,nums[ i ] 不选,此时能得到的最大点数 

2. 状态转移方程

所以状态转移方程也有两个,

选 i 位置,就是nums[ i ] + 不选 i - 1 位置的情况:f [ i ]  = g[ i - 1 ] + nums[ i ]

g[ i ] = max( f [ i - 1 ],g[ i - 1 ] )

3. 初始化

f [ 0 ] = nums[  0 ],g[ 0 ] = 0。

4. 填表顺序

从左往右

5. 返回值

max( f [ n - 1 ],g[ n - 1 ] )

3. 代码编写

class Solution {
public:
    int deleteAndEarn(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        vector<int> dp(nums[nums.size() - 1] + 1);
        for(auto e : nums) dp[e] += e;
        int n = dp.size();
        vector<int> f(n);
        auto g = f;
        f[0] = dp[0];
        for(int i = 1; i < n; i++) {
            f[i] = g[i - 1] + dp[i];
            g[i] = max(f[i - 1], g[i - 1]);
        }
        return max(f[n - 1], g[n - 1]);
    }
};

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

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

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

相关文章

百度智能云连拿四年第一,为什么要深耕AI公有云市场

AI是过去几年云计算市场中的最大变量&#xff0c;而大模型的成熟&#xff0c;毫无疑问将指数级增强这个变量。 记得在2022年年底&#xff0c;生成式AI与大模型开始爆火的时候&#xff0c;我们就曾讨论过一个问题&#xff1a;这轮AI浪潮中&#xff0c;最先受到深刻影响的将是云计…

利用spss进行多元逐步回归

1.首先用代码将变量归一化 我这第5列及后是我要归一化的数据&#xff0c;将归一化后的数据保存为nor_result.csv文件 import pandas as pd from sklearn.preprocessing import MinMaxScalerdf pd.read_csv(E:\\Sentinel12\\yangben\\result.csv) cols_to_normalize df.colu…

vue3 + TS + VueUse 快捷存取操作cookie,存储用户token流程

1.依赖安装 VueUse可以为Vue开发提供方便和高效的支持&#xff0c;提高开发效率和代码质量。 VueUse网址&#xff1a;https://vueuse.org/integrations/useCookies/#usecookies 依赖1(主)&#xff1a;npm i vueuse/integrations 依赖2(模块)&#xff1a;npm i universal-cooki…

PCB设计中常见的走线等长要求

1、在做 PCB 设计时&#xff0c;为了满足某一组所有信号线的总长度满足在一个公差范围内&#xff0c;通常要使用蛇形走线将总长度较短的信号线绕到与组内最长的信号线长度公差范围内&#xff0c;这个用蛇形走线绕长信号线的处理过程&#xff0c;就是我们俗称的 PCB 信号等长处理…

GPT一键化身「AI助理」——自定义指令功能

最近GPT又更新了一个超实用的功能——自定义指令&#xff0c;启用后&#xff0c;你可以给GPT设置一些固定指令&#xff0c;让它记住或扮演某个角色&#xff0c;比如客服、律师、投资管理师、老师、营养师...... 这样&#xff0c;我们就不再需要每次都要打开新的聊天&#xff0c…

AT15透明屏有哪些特点?

AT15透明屏是一种新型的显示技术&#xff0c;它采用了透明材料制成的屏幕&#xff0c;可以实现透明显示效果。这种屏幕可以广泛应用于各种领域&#xff0c;如商业广告、展览展示、智能家居等。 AT15透明屏的特点之一是其高透明度。 由于采用了透明材料制成&#xff0c;AT15透明…

生成式人工智能新政策发布:AI进入规范时代!

最近&#xff0c;国家发布了《生成式人工智能服务管理暂行办法》。该条例于8月15日开始施行&#xff0c;使得AI应用进入规范化管理。该法明确了适用于提供生成文本、图片、音频、视频等内容的服务&#xff0c;鼓励人工智能技术在各行业、各领域的创新应用&#xff0c;生成积极健…

深度学习:常用优化器Optimizer简介

深度学习&#xff1a;常用优化器Optimizer简介 随机梯度下降SGD带动量的随机梯度下降SGD-MomentumSGDWAdamAdamW 随机梯度下降SGD 梯度下降算法是使权重参数沿着整个训练集的梯度方向下降&#xff0c;但往往深度学习的训练集规模很大&#xff0c;计算整个训练集的梯度需要很大…

【C++】 函数模板和类模板

文章目录 一、模板1.1 函数模板和类模板1.2 函数模板1.2.1 普通函数和函数模板区别1.2.2 普通函数和函数模板调用规则1.2.3 模板局限性 1.3 类模板1.3.1 类模板对象做函数参数1.3.2 类模板的继承1.3.3 类模板成员函数的类外实现1.3.4 类模板分文件编写1.3.5 类模板全局函数类内…

PaddleOCR C++编译出错解决方案

文章目录 前言一、环境准备1、主要环境2、源码下载3、C推理库下载 二、报错信息1.静态库调用错误2.ld returned 1 exit status 总结 前言 最近&#xff0c;想尝试下PaddleOCR的C推理&#xff0c;但是过程不如人所愿&#xff0c;除了很多问题&#xff0c;这里捡重点的说下吧&…

【Python 实战】---- 批量识别图片中的文字,存入excel中【使用百度的通用文字识别】

分析 1. 获取信息图片示例 2. 运行实例 3. 运行结果 4. 各个文件的位置 实现 1. 需求分析 识别图片中的文字【采用百度的通用文字识别】;文字筛选,按照分类获取对应的文本;采用 openpyxl 实现将数据存入 excel 中。2. 获取 access_token 获取本地缓存的

双虚拟机实现数据库自动备份

FTP的使用&#xff1a; 1.安装FTP 1、检测系统有没有安装ftp&#xff0c;执行命令&#xff1a; rpm -qa | grep ftp若存在用rpm命令移除后再行安装&#xff0c;执行命令&#xff1a; rpm -e vsftpd-3.0.2-9.e17.x86_642、如果没有安装&#xff0c;则在线安装ftp&#xff0c…

[深度学习实战]基于PyTorch的深度学习实战(补充篇)[RNN和LSTM基本原理、PyTorch中的LSTM、Embedding层]

目录 一、前言二、RNN和LSTM基本原理2.1 长期依赖问题2.2 LSTM 网络2.3 LSTM 的核心思想2.4 逐步理解 LSTM2.5 LSTM 的变体2.5.1 coupled 忘记门和输入门2.5.2 GRU 三、PyTorch中的LSTM四、Embedding层五、后记 PyTorch——开源的Python机器学习库 一、前言 写这部分的文章很耗…

汽配企业如何把MES管理系统的价值利用到最大化

随着信息技术的快速发展&#xff0c;越来越多的汽配企业开始引入MES生产管理系统&#xff0c;以提高生产效率、优化资源利用和提升产品质量。然而&#xff0c;要想实现MES系统的最大化价值&#xff0c;汽配企业需要从以下几个方面入手。 首先&#xff0c;汽配企业应该充分了解M…

Android性能优化之游戏 OutOfMemoryError: pthread_create探究真相

近期&#xff0c;着手分析游戏的OOM问题&#xff0c;该问题在bugly上的量级&#xff0c;恐怖吓人的百万级&#xff0c;处于java 异常的top 1, 如下所示&#xff1a; 发生的设备&#xff0c;基本上都是32位的cpu架构 分析过程 先来看下报错的堆栈&#xff0c;基本上都是发生…

Prompt Engineering论文梳理(主要为2022年)

AutoPrompt &#xff08;EMNLP2020&#xff09; Shin T, Razeghi Y, Logan IV R L, et al. Autoprompt: Eliciting knowledge from language models with automatically generated prompts[J]. arXiv preprint arXiv:2010.15980, 2020. 基本架构&#xff0c;original input t…

【历史上的今天】7 月 27 日:模型检测先驱出生;微软收购 QDOS;第一张激光照排的中文报纸

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 7 月 27 日&#xff0c;在 1961 年的今天&#xff0c;IBM 推出了 IBM Selectric 电动打字机&#xff1b;电动打字机是打字机界无可争议的游戏规则颠覆者&#…

电商-订单模块

电商-订单模块 流程思维图表结构支付中心流程 流程思维图 表结构 支付中心 流程

座舱域控进入“上车”加速期,中国芯片的狂飙时代来了?

智能座舱成为了全球芯片厂商竞逐的下一个战场。 进入2023年&#xff0c;联发科官宣与英伟达合作开发集成CPU粒芯的汽车SoC&#xff0c;为下一代软件定义汽车提供全套车载人工智能座舱解决方案&#xff1b;AMD在特斯拉座舱落地后&#xff0c;与亿咖通在智能座舱领域达成了合作&…

猿辅导AI智能学情分析系统,用科技分析每个的孩子课堂表现

近几年&#xff0c;随着现代科技的不断发展&#xff0c;人们的生活也发生了很大的变化。“翻译神器”让沟通没有了语言障碍&#xff1b;“支付神器”让我们无需携带现金便可轻松消费&#xff0c;方便快捷&#xff1b;科技赋能下的课堂&#xff0c;也让教育从“面对面”传道解惑…