day52--动态规划11
想死,但感觉死的另有其人,,怎么还在动态规划!!!!!
- 123.买卖股票的最佳时机III
- 188.买卖股票的最佳时机IV
第一题:买卖股票的最佳时机III
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
-
示例 1:
-
输入:prices = [3,3,5,0,0,3,1,4]
-
输出:6 解释:在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3 。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。
就是说对于这个股票,只能进行最多四次操作,买了卖了然后再买再卖
动规五部曲
(1)确定dp数组以及下标的含义
一天可以发生5种情况
0. 没有操作
1.第一次持有股票
2.第一次不持有股票
3.第二次持有股票
4.第二次不持有股票
这里还是使用二维数组,但是之前只有dp[i][0]和dp[i][1]两种情况,这里dp[i][j]中表示第i天,j为[0-4]共5个状态,dp[i][j]表示第i天状态j所剩最大现金。
(2)确定递推公式
达到dp[i][1]状态,有两个具体的操作:
操作一:第i天买入股票,那么dp[i][1]=dp[i-1][0]-prices[i]
操作二:第i天没有操作,dp[i][1]=dp[i-1][1]
dp[i][1]=max(dp[i-1][0]-prices[i], dp[i-1][1]);还是取最大的情况
dp[i][2]也有两种具体操作:
操作一:第i天卖出了股票,那么dp[i][2]=dp[i-1][1]+prices[i]
操作二:第i天没有卖出股票,跟前一天一样,dp[i][2]=dp[i-1][2]
同理,dp[i][2]=max(dp[i-1][1]+prices[i], dp[i-1][2]);
同上 dp[i][3]和dp[i][4]一样的计算方法
(3)dp数组如何初始化
第0天没有操作,即dp[0][0]=0
第0天做第一次买入的操作,即dp[0][1]=-prices[0]
第0天做第一次卖出的操作,因为没有股票,所以没有卖出的东西,dp[0][2]=0
同理,第二次买进卖出: dp[0][3]=-prices[0]; dp[0][4]=0
(4)确定遍历顺序
从前向后遍历
(5)举例推导dp数组

似乎有一些理解了:之前只能买进卖出各一次,所以对于i天来说,可以买进,或者卖出,dp[i][0]就是买进操作,dp[i][1]就是卖出操作,最后求出最大的值
第二题:买卖股票的最佳时机IV
给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
-
示例 1:
-
输入:k = 2, prices = [2,4,1]
-
输出:2 解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2。
相比上一题,k成了可变的;
也就是进行k此买进,k次卖出;
其他规则和上题一样:
只要dp[i][j]的下标有了新的意义,int j=0;j<2*k-1;j++
为什么呢,因为k次交易,就一共是2k次动作,每一次都可以买(卖)或者不操作
//首先dp[0][0]不做操作为0//然后dp[0][1]表示第一次买进//dp[0][3]表示第二次买进,前面可能都没有操作,所以“第一次”买进的时候,钱为-prices[0];for(int j=1;j<2*k;j+=2){ dp[0][j]=-prices[0];}
相关文章:
day52--动态规划11
想死,但感觉死的另有其人,,怎么还在动态规划!!!!! 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV 第一题:买卖股票的最佳时机III 给定一个数组,它…...
Jenkins入门级安装部署
前言 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。通常,项目中常用Jenkins作为编译打包项目的工具࿰…...
tcpdump 异常错误
tcpdump 进行抓包的时候,-w 提示 Permission denied: sudo tcpdump -w test1.log tcpdump: test1.log: Permission denied 开始以为是用户权限的问题,后来换用 root 账户还是不行,经搜索,是 AppArmor 的问题。 解决方…...
如何绘制【逻辑回归】中threshold参数的学习曲线
threshold参数的意义是通过筛选掉低于threshold的参数,来对逻辑回归的特征进行降维。 首先导入相应的模块: from sklearn.linear_model import LogisticRegression as LR from sklearn.datasets import load_breast_cancer from sklearn.model_selecti…...
4.1 数据库安全性概述
思维导图: 前言: - **第一章回顾**:数据库特点 - 统一的数据保护功能,确保数据安全、可靠、正确有效。 - 数据保护主要涵盖: 1. **数据的安全性**(本章焦点) 2. 数据的完整性(第…...
tftp服务的搭建
TFTP服务的搭建 1 先更新一下apt包 sudo apt-get update2 服务器端(虚拟机上)安装 TFTP相关软件 sudo apt-get install xinetd tftp tftpd -y3 创建TFTP共享目录 mkdir tftp_sharetftp_shaer的路径是/home/cwz/tftp_share 3.1 修改共享目录的权限 sudo chmod -R 777 tftp…...
c语言简介
C 语言最初是作为 Unix 系统的开发工具而发明的。 1969年,美国贝尔实验室的肯汤普森(Ken Thompson)与丹尼斯里奇(Dennis Ritchie)一起开发了 Unix 操作系统。Unix 是用汇编语言写的,无法移植到其他计算机&…...
OpenLayers.js 入门教程:打造互动地图的入门指南
本文简介 戴尬猴,我是德育处主任 本文介绍如何使用 OpenLayers.js (后面简称 ol)。ol 是一个开源 JavaScript 库,可用于在Web页面上创建交互式地图。 ol能帮助我们在浏览器轻松地使用地图功能,例如地图缩放、地图拖动…...
黑马头条:app端文章查看
黑马头条:app端文章查看 黑马头条:app端文章查看文章列表加载1. 需求分析2. 表结构分析3. 导入文章数据库3.1 导入数据库3.2 导入对应的实体类 4. 实现思路5. 接口定义6. 功能实现6.1:导入heima-leadnews-article微服务,资料在当天…...
常见使用总结篇(一)
Autowired和Resource注解的区别 Autowired注解是Spring提供的,Resource注解是J2EE本身提供Autowird注解默认通过byType方式注入(没有匹配会通过byName方式),而Resource注解默认通过byName方式注入(没有匹配会通过byType方式)Autowired注解注入的对象需要…...
【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《数据库系统》
在数据库章节中可能会考察以下内容: 文章目录 数据库完整性约束🌟数据库模式🌟🌟ER模式🌟关系代数🌟🌟并发控制🌟数据仓库与数据挖掘🌟🌟反规范化技术&#x…...
北邮22级信通院数电:Verilog-FPGA(7)第七周实验(1):带使能端的38译码器全加器(关注我的uu们加群咯~)
北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 关注作者的uu们可以进群啦~ 目录 方法一ÿ…...
SIT3491ISO具有隔离功能,256 节点,全双工 RS422/RS485 芯片
SIT3491ISO 是一款电容隔离的全双工 RS-422/485 收发器,总线端口 ESD 保护能力 HBM 达到 15kV 以上,功能完全满足 EIA-422 以及 TIA/EIA-485 标准要求的 RS-422/485 收发器。 SIT3491ISO 包括一个驱动器和一个接收器,两者均…...
在windows服务器上部署一个单机项目以及前后端分离项目
目录 一. 单机项目在windows服务器上的部署 1.1 在本机上测试项目无误 1.1.1 在数据库中测试sql文件没问题 1.1.2 在tomcat中测试war文件无误 1.1.3 测试完成后,进入浏览器运行单机项目确保无误 1.2 在windows服务器中运行项目 二. 前后端分离项目在服务器上…...
使用jdbc技术,在数据库中存储大数据对象(使用字节IO流读取图片等给blob等二进制类型数据赋值)
在MySQL中,BLOB是一种数据类型,代表二进制大对象(Binary Large Object),可以存储大量的二进制数据,如图像、声音、视频等。BLOB类型的数据在存储和检索时会以二进制方式进行处理,而不是字符方式…...
统计学习方法 支持向量机(下)
文章目录 统计学习方法 支持向量机(下)非线性支持向量机与和核函数核技巧正定核常用核函数非线性 SVM 序列最小最优化算法两个变量二次规划的求解方法变量的选择方法SMO 算法 统计学习方法 支持向量机(下) 学习李航的《统计学习方…...
【python】如何注释
一:通过#注释行 #这个是个注释 print(hello world) 二:通过或"""注释段落 这个注释段落 这是注释段落 这是注释段落print(hello world) """ 这是多行注释,用三个双引号 这是多行注释,用三个双引…...
C++——C++入门(二)
C 前言一、引用引用概念引用特性常引用使用场景传值、传引用效率比较值和引用的作为返回值类型的性能比较 引用和指针的区别 二、内联函数概念特性知识点提升 三、auto关键字类型别名思考auto简介auto的使用细则auto不能推导的场景 四、基于范围的for循环范围for的语法范围for的…...
容联七陌百度营销通BCP解决方案,让营销更精准
百度营销通作为一个快速迭代、满足客户多元化营销需求的高效率营销工具成为众多企业的选择,通过百度营销通BCP对接,企业就可以在百度咨询页接入会话,收集百度来源的访客搜索关键词,通过百度推广获取更多的精准客户,从而…...
Transformer模型 | 用于目标检测的视觉Transformers训练策略
基于视觉的Transformer在预测准确的3D边界盒方面在自动驾驶感知模块中显示出巨大的应用,因为它具有强大的建模视觉特征之间远程依赖关系的能力。然而,最初为语言模型设计的变形金刚主要关注的是性能准确性,而不是推理时间预算。对于像自动驾驶这样的安全关键系统,车载计算机…...
锂电池安全使用指南:从原理到实践,避免常见风险
1. 项目概述:从“能用”到“用好”的锂电安全课如果你玩过任何需要脱离电源线工作的电子项目,无论是给一个Arduino小车供电,还是驱动一架四轴飞行器,最终都绕不开一个核心问题:电源。从最基础的碱性电池,到…...
工业智能化落地实践:从边缘AI到预测性维护的ST方案整合
1. 项目概述:一场工业智能化的深度对话最近刚参加完ST(意法半导体)的工业峰会回来,感触颇深。这场活动与其说是一场展会,不如说是一场关于“工业智能化如何落地”的深度行业对话。作为一家长期深耕工业通讯、物联网与嵌…...
别再为FluidSIM 3.6安装报错头疼了!WinHEX找不到进程?看这篇保姆级图文教程就够了
FluidSIM 3.6安装疑难全解析:从报错修复到高效使用指南 当工科实验室的电脑屏幕再次弹出那个令人窒息的错误提示——"WinHEX找不到进程",许多初次接触FluidSIM的师生都会陷入束手无策的困境。这款由德国Festo公司与帕德博恩大学联合开发的液压…...
终极解决Windows风扇控制难题:FanControl完全指南
终极解决Windows风扇控制难题:FanControl完全指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fan…...
如何使用ubuntu搭建一个无盘PC启动服务器
启动windows,1. 安装tftp服务器sudo apt install tftpd-hpa2. 设置tftp,sudo systemctl restart tftpd-hpasudo nano /etc/default/tftpd-hpa# /etc/default/tftpd-hpaTFTP_USERNAME"tftp" TFTP_DIRECTORY"/srv/tftp" TFTP_ADDRESS":69" TFTP_OP…...
MSP430铁电超值系列MCU:25美分实现25种外设的嵌入式设计实战
1. 项目概述:为什么是MSP430铁电超值系列?在嵌入式开发的广阔世界里,选型往往是项目成败的第一步。面对琳琅满目的微控制器(MCU),工程师们常常在性能、成本、功耗和开发便利性之间反复权衡。今天我想和大家…...
杰理之AutoDuck 闪避节点参数更新结构体【篇】
struct autoduck_update_parm{ int duck_amount; //背景音乐闪避的音量值(dB) int attack; //启动时间(ms) int release; //释放时间(ms) int hold_time; //闪避之后的保持时间 (ms) }; typedef struct AutoDuckParam_TOOL_SET { int is_bypass; struct aut…...
QQ截图独立版:免费获取专业级屏幕工具集的完整指南
QQ截图独立版:免费获取专业级屏幕工具集的完整指南 【免费下载链接】QQScreenShot 电脑QQ截图工具提取版,支持文字提取、图片识别、截长图、qq录屏。默认截图文件名为ScreenShot日期 项目地址: https://gitcode.com/gh_mirrors/qq/QQScreenShot 还在为寻找功…...
如何快速配置阅读APP书源:26个高质量小说资源一键导入指南
如何快速配置阅读APP书源:26个高质量小说资源一键导入指南 【免费下载链接】Yuedu 📚「阅读」自用书源分享 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 阅读APP作为一款开源的小说阅读工具,本身不提供小说内容,而…...
QT6.5项目实战:用HidApi库搞定USB HID设备读写(附完整配置流程)
QT6.5实战:HidApi库深度集成与USB HID设备高效通信指南 USB HID设备作为人机交互的基础协议,在工业控制、医疗设备、游戏外设等领域广泛应用。当开发者需要在QT6.5环境中实现与这类设备的稳定通信时,HidApi库因其轻量级和跨平台特性成为理想选…...
