day51 --动态规划10

news2024/10/7 17:34:16
  •  121. 买卖股票的最佳时机 
  •  122.买卖股票的最佳时机II 

第一题:买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

  • 示例 1:

  • 输入:[7,1,5,3,6,4]

  • 输出:5

0、贪心的算法思路是求得局部最优,然后求得全局最优,

1、动态规划的思路是用一个二维dp数组,一维dp[i][0]表示第i天持有股票所得最多现金

另一维dp[i][1]表示第i天不持有股票所得最多现金。

(1)确定dp数组及其下标含义

dp[i][0]:  表示第i天持有股票所得最多现金,可正可负

dp[i][1]:  表示第i天不持有股票所得最多现金

(2)确定递推公式

首先dp[i][0]可以由两个状态求出来

要么是今天没买,保持昨天的状态,也就是dp[i-1][0]

要么是今天买了,所得现金就是买入今天股票后所得现金即:-prices[i]

所以dp[i][0]=max(dp[i-1][0],-prices[i]);

对于dp[i][1]也可以由两个状态求出来

要么是前一天就卖出去了,今天就维持现状,所持现金就没变:dp[i-1][1]

要么是今天正好卖出,所得现金就是今天的价格卖出的所得现金:prices[i]+dp[i-1][0]

同样dp[i][1]取最大的,dp[i][1]=max(dp[i-1][1],prices[i]+dp[i-1][0]);

(3)dp数组如何初始化

根据递推公式,两者都是从dp[0][0]和dp[0][1]开始推导出来,所以,dp[0][0]-=prices[0]

表示第0天不持有股票,所以现金是0,dp[0][1]=0;

(4)确定遍历顺序

dp[i]都是由dp[i-1]推出来的,所以一定是从前向后遍历

(5)举例推导数组

根据prices=[7,1,5,3,6,4]可得

dp[0][0]=-7; dp[0][1]=0

dp[1][0]=-1; dp[1][1]=max(0,-6)=0

dp[2][0]=-1; dp[2][1]=max(0,4)=4

dp[3][0]=-1; dp[3][1]=max(4,2)=4

dp[4][0]=-1; dp[4][1]=max(4,5)=5

dp[5][0]=-1; dp[5][1]=max(5,3)=5

本题有多种方法可解决,动态规划比较难构思,第二题不做学习

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

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

相关文章

Phthon下载库函数

在代码中使用import tushare as ts导入时编译会报错找不到tushare,此时则表示本地没有相应的库函数包 打开安装python的目录,找到pip.exe文件目录,例如D:\Python\Python311\Scripts,文件夹右键->在终端打开,输入pi…

RPC远程调用加密方法获取返回值

前言 从混淆的加密JS中还原了加密参数的具体生成流程,结果想从JS转python的过程中第一步就卡住了。开头密钥JS代码如下,但是水平有限不知道如何转为python实现(如果有大佬知道希望可以评论指点)。利用execjsjsdom来执行简化还原后的JS代码依旧无法实现。…

云游数智农业世界,体验北斗时空智能

今日,2023年中国国际农业机械展览会在武汉正式拉开帷幕,众多与会者云集,各类农机产品纷呈,盛况空前。 千寻位置作为国家北斗地基增强系统的建设与运营方,在中国国际农业机械展览会上亮相,以「北斗时空智能 …

基于pyenv和virtualenv搭建python多版本虚拟环境

pyenv简介 由于Python的依赖是基于site的,这对于生产环境来说,是一种简单而正确的方式,然而,对于我们的开发环境,基于这样的管理方式,带来了可怕的第三方依赖管理的难题,virtualenv适时出现了&a…

【AICFD案例教程】锥形燃烧器燃烧仿真

AICFD是由天洑软件自主研发的通用智能热流体仿真软件,用于高效解决能源动力、船舶海洋、电子设备和车辆运载等领域复杂的流动和传热问题。软件涵盖了从建模、仿真到结果处理完整仿真分析流程,帮助工业企业建立设计、仿真和优化相结合的一体化流程&#x…

Linux入门攻坚——5、find,locate,特殊权限,磁盘管理初识

文件查找:在文件系统上查找符合条件的文件。 工具:locate——非实时查找(数据库查找,基于索引,索引需要维护,有间隔,所以有不一致的情况存在)。find——实时查找 locate&#xff1…

Leetcode—26.删除有序数组中的重复项【简单】

2023每日刷题&#xff08;十&#xff09; Leetcode—26.删除有序数组中的重复项 双指针法实现代码 int removeDuplicates(int* nums, int numsSize){int i 0;int j 1;while(j < numsSize) {if(nums[j] ! nums[i]) {nums[i] nums[j];}j;}return i 1; } 运行结果 之后我…

算法通关村第19关【黄金】| 继续盘点高频动态规划dp问题

回文串专题 1.最长回文串 思路&#xff1a; 确定dp&#xff1a;dp[i][j]子串是否是回文串 确定递推公式&#xff1a; 例如&#xff1a;aa|cbc|aa dp[2][4] dp[3][3] true 如果s[i] s[j] 那么 dp[i][j] dp[i1][j-1]否则dp[i][j] false 确定初始化&#xff1a;dp[i][i] …

Ubuntu ARMv8编译Qt源码以及QtCreator

最近需要在NVIDIA小盒子上面跑一个程序&#xff0c;一开始想着在Ubuntu x64下交叉编译一版&#xff0c;后来发现libqxcb.so 这个库在configure时就会一直报错&#xff0c;多方查找怀疑可能是由于硬件不支持在x64环境下编译AMR架构的xcb库。 所以最后在ARM下直接编译Qt源码了&am…

ONNX: export failure ❌ 0.0s: Unsupported ONNX opset version: 17

python export.py --weights runs/train/exp6/weights/best.pt --include onnx yolov5 训练好的pt文件导出onnx 导出失败 异常信息&#xff1a; Fusing layers… YOLOv5s summary: 157 layers, 7012822 parameters, 0 gradients, 15.8 GFLOPs PyTorch: starting from runs/tra…

vue中时间控件

//组件 <template><div class"home-time"><div class"tab"><el-radio-group v-model"radio" change"radioChange"><el-radio-button label"1">天</el-radio-button><el-radio-butto…

蕉下冲锋衣:过冬利器还是昙花一现?

“双11”前夕&#xff0c;靠防晒单品小黑伞起家的蕉下上新“过冬”产品冲锋衣。 此前&#xff0c;蕉下于2022年4月和10月分别向港交所递交招股书&#xff0c;拟冲刺“中国城市户外第一股”&#xff1b;截止目前&#xff0c;其IPO申请状态已转为“失效”。 「不二研究」据蕉下…

记一次 .Net+SqlSugar 查询超时的问题排查过程

环境和版本&#xff1a;.Net 6 SqlSuger 5.1.4.* &#xff0c;数据库是mysql 5.7 &#xff0c;数据量在2000多条左右 业务是一个非常简单的查询&#xff0c;代码如下&#xff1a; var list _dbClient.Queryable<tb_name>().ToList(); tb_name 下配置了一对多的关系…

Calibre软件学习

Mentor calibre 软件 版图物理验证主要包括&#xff1a; ①设计规则检查&#xff08; DRC &#xff09; ②电学规则检查&#xff08; ERC &#xff09; ③版图与电路图一致性检查 ( LVS) LVS 版图与电路图一致性检查 ( Layout Versus Schematic, LVS) 的目的在于检查人工…

echarts案例之日历

一、此案例基于Vue3ts&#xff0c;效果展示&#xff1a; 二、单个属性的值&#xff1a; 1、visualMap.pieces 根据值自定义每个小块的颜色 pieces: [ { min: 0, // 最小值 max: 20, // 最大值 label: 未统计, color: rgba(27, 61, 71,1), }, { min: 20, max: 50, label: 优, …

机器学习第一周

一、概述 机器学习大致会被划分为两类&#xff1a;监督学习&#xff0c;无监督学习 1.1 监督学习 监督学习其实就是&#xff0c;给计算机一些输入x和正确的输出y&#xff08;训练数据集&#xff09;&#xff0c;让他总结x->y的映射关系&#xff0c;从而给他其他的输入x&a…

linux套接字选项API

获取套接字的选项值(getsockopt) 【头文件】 #include <sys/types.h> #include <sys/socket.h> 【函数原型】 int getsockopt(int sockfd, int level, int optname,void *optval, socklen_t *optlen); 【函数功能】 用于获取一个套接字的选项 【参数含义】 […

视图,触发器与存储过程

python操作MySQL SQL的由来: MySQL本身就是一款C/S架构&#xff0c;有服务端、有客户端&#xff0c;自身带了有客户端&#xff1a;mysql.exe python这门语言成为了MySQL的客户端(对于一个服务端来说&#xff0c;客户端可以有很多) 操作步骤&#xff1a; 1. 先链接MySQL …

Compose横向列表和网格列表

横向列表LazyRow LazyRow和LazyColumn使用类似。 /*** 横向列表LazyRow*/ Composable fun LazyRowTest() {val context LocalContext.currentval dataList arrayListOf<Int>()for (index in 1..50) {dataList.add(index)}LazyRow {items(dataList) { data ->Box(mo…

大数据可视化BI分析工具Apache Superset实现公网远程访问

大数据可视化BI分析工具Apache Superset实现公网远程访问 文章目录 大数据可视化BI分析工具Apache Superset实现公网远程访问前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网…