代码随想录 动态规划 Ⅹ

123. 买卖股票的最佳时机 III

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

思路:最多可以完成两笔,也就是说在一天之中,可能存在五个状态:从未持有过股票,买入第一支股票,卖出第一支股票且未买入第二支股票,买入第二只股票,卖出第二支股票,那么可以建立一个 len(prices)* 5 大小的数组,dp[i][x]表示在第i天第x个状态下的最大利润。转移方程为 dp[i][0] = 0,dp[i][1] = max(dp[i-1][0], dp[i-1][0] - price[i]), dp[i][2] = max(dp[i-1][2], dp[i-1][1] + prices[i]) 以此类推 , 初始状态为:dp[i][0] = dp[i][2]=dp[i][4]= 0, dp[i][1] = dp[i][3]= - price[0]

python: 

class Solution:def maxProfit(self, prices: List[int]) -> int:dp = [[0] * 5 for _ in range(len(prices))]dp[0][1] = dp[0][3] = -prices[0]for i in range(1, len(prices)):dp[i][0] = 0dp[i][1] = max(dp[i-1][0] - prices[i], dp[i-1][1])dp[i][2] = max(dp[i-1][1] + prices[i], dp[i-1][2])dp[i][3] = max(dp[i-1][2] - prices[i], dp[i-1][3])dp[i][4] = max(dp[i-1][3] + prices[i], dp[i-1][4])return dp[-1][4]

 188. 买卖股票的最佳时机 IV

思路:与上一题思路类似 

class Solution:def maxProfit(self, k: int, prices: List[int]) -> int:dp = [[0] * (2*k+1) for _ in range(len(prices))]for j in range(2*k + 1):if j % 2 == 1:dp[0][j] = -prices[0]for i in range(1, len(prices)):for n in range(1, 2*k+1):if n % 2 == 1:dp[i][n] = max(dp[i-1][n], dp[i-1][n-1] - prices[i])else:dp[i][n] = max(dp[i-1][n], dp[i-1][n-1] + prices[i])return dp[-1][-1]

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

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

相关文章

C++常见设计模式

设计模式 设计模式的六大原则:https://zhuanlan.zhihu.com/p/110130347 适配器模式 假设Client想要一个正方形(client Interface),但是提供的服务(service)是个圆形,那么我就把这个圆通过适配…

java-decompiler

Java Decompiler GitHub F:\Document_JD-GUI\jd-gui-windows-1.4.0 jd-gui-windows-1.4.0 JDK 1.7 jd-gui-windows-1.6.6 JDK 1.8 Releases java-decompiler/jd-gui GitHub

flutter web 优化和flutter_admin_template

文章目录 Flutter Admin TemplateLive demo: https://githubityu.github.io/live_flutter_adminWeb 优化 Setup登录注册英文 亮色主题 中文 暗黑主题管理员登录权限 根据权限动态添加路由 第三方依赖License最后参考学习 Flutter Admin Template Responsive web with light/da…

【操作系统笔记十四】科普:POSIX 是什么

注:本文转载自该文章posix是什么都不知道,还好意思说你懂Linux? Linux开发者越来越多,但是仍然有很多人整不明白POSIX是什么。本文就带着大家来了解一下到底什么是POSIX,了解他的历史和重要性。 一、什么是 POSIX&…

虹科分享 | 网络保险:有效承保网络风险解决方案

文章来源:虹科网络安全 点击阅读原文:https://mp.weixin.qq.com/s/myCFPYtVVz5TPSFQaKqvLg 网络风险似乎往往很难量化,这使得保险公司很难适当地承保其网络风险政策。威胁载体的数量和不断发展的威胁,如新型恶意软件/勒索软件&…

220 - Othello (UVA)

题目链接如下: Online Judge 我最终的代码如下(有个细节,88行输出时,需要%2d;locate函数第三个参数是0的话,代表只是判断是否可以放置;1代表下一步棋,包括替换被夹住的棋子&#x…

【面试题精讲】Java 和 C++ 的区别?

“ 有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top ” 首发博客地址[1] 文章更新计划[2] 系列文章地址[3] 1. Java 和 C 是什么? Java 和 C都是流行的编程语言,用于开发各种类…

Android file

写文件——FileOutputStream openFileOutput 读文件——FileInputStream openFileInput openFileOutput写文件时当文件不存在,Android自动创建。 通过BufferedWriter直接写入字符串 public void writeFile(String inputText) {FileOutputStream outputStream nul…

RFID技术:钢条加工现场的智能化管理利器

RFID技术:钢条加工现场的智能化管理利器 RFID(Radio Frequency Identification)技术作为一种非接触式自动识别技术,近年来在工业领域得到广泛应用。本文将探讨RFID在钢条加工现场的应用,包括材料追踪与管理、生产过程…

本次CTF·泰山杯网络安全的基础知识部分

简记23年九月参加的泰山杯网络安全的部分基础知识的题目,随时补充 1. 国密算法哪个属于公钥? SM2 a. 国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,目前主要使用公开的SM2、SM3、SM4三类算法&#x…

安卓系列机型 框架LSP 安装步骤 支持多机型 LSP框架通用安装步骤【二】

​​​​​​安卓玩机教程---全机型安卓4----安卓12 框架xp edx lsp安装方法【一】 低版本可以参考上个博文了解相关安装方法。 LSP框架优点 简单来说装lsp框架的优点在于可以安装各种模块。包括 但不限于系统优化 加速 游戏开挂等等的模块。大致相当于电脑的扩展油猴 Lspos…

SAP服务器文件管理

SAP服务器文件管理 文件说明:对于SAP服务器的文件管理,系统给出3个事物码,分别是显示目录的AL11,下载文件的 CG3Y和上传文件的CG3Z。 AL11显示目录:以查找系统参数文件为例,在前台执行事物码AL11进入,如图…

word中使用latex多行公式,矩阵公式

\eqarray{H& [h(x_1)^T,\cdots,h(x_N)^T]^T \\ & [\matrix{g(w_1 x_1b_1) & \cdots & g(w_L x_1b_L) \\ \vdots & \ddots & \vdots \\ g(w_1 x_Nb_1) & \cdots & g(w_L x_Nb_L)}]_{N \times L}}&的引起的那条竖线可以通过backspace或者del…

网络基础面试题

1. ISO/OSI的七层模型 ISO国际标准化组织 OSI开放系统互连 TCP和UDP都会进行差错校验,TCP会告诉A包发错了,但UDP不会告诉A发错了会把包丢弃。 静态路由不需要路由器做任何的计算,对路由器的消耗是最小的,效率最高但是缺点是…

babel原理

Babel是一个非常流行的JavaScript编译器工具,其主要功能是将新版本的JavaScript代码转换为旧版本的代码,以便能够在旧版本的浏览器或环境中运行。 Babel的工作原理是通过将JavaScript代码解析为抽象语法树(AST,Abstract Syntax T…

SQLyog 连接 MySQL8.0+ 报错2058

问题如下: 解决方案: 1.首先用命令窗口进入user表 2.使用有mysql.user表权限的用户连接mysql并执行如下命令: ALTER USER sqlyoglocalhost IDENTIFIED WITH mysql_native_password BY root23456; 注:使用mysql_native_password…

亿图脑图新版本支持思维导图一键生成PPT、音视频等格式,办公提效再升级

近日,国产思维导图软件——亿图脑图MindMaster发布了全新版本V10.9.0,本次亿图脑图的升级给用户带来了极大的惊喜。全新升级的亿图脑图MindMaster不仅支持20格式的文件智能解析成思维导图,还支持思维导图一键生成PPT、音频、视频等内容形式&a…

Linux命令教程:使用cat命令查看和处理文件

文章目录 教程:使用cat命令在Linux中查看和处理文件1. 引言2. cat命令的基本概述3. 查看文件内容4. 创建文件5. 文件重定向和管道6. 格式化和编辑文件7. 实际应用示例7.1 使用cat命令浏览日志文件7.2 利用cat命令合并多个配置文件7.3 使用cat命令将文件内容发送到其…

win32进程间通信方式(13种)

win32进程间通信 文件映射共享内存匿名管道命名管道远程过程调用(RPC)对象连接与嵌入(OLE)动态数据交换(DDE)剪贴板WM_COPYDATA消息邮件槽其它 文件映射 特点:本地间通信,不能用于网…

Excel实现只针对某项字符第一次出现的位置分列

取第一次出现左边数值 B1LEFT(A1,SEARCH(".",A1)-1) 取第一次出现右边数值 C1RIGHT(A1,LEN(A1)-SEARCH(".",A1)) 公式如图: