news 2026/9/11 8:00:41

leetcode 3573(买卖股票问题,状态机dp)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 3573(买卖股票问题,状态机dp)

3573: 买卖股票的最佳时机Ⅴ

思路:状态机(买卖股票问题)

  • dfs(i,j,0) 表示在 prices[0] 到 prices[i] 中完成至多 j 笔交易,第 i 天结束时未持有股票的最大利润。
  • dfs(i,j,1) 表示在 prices[0] 到 prices[i] 中完成至多 j 笔交易,第 i 天结束时持有股票的最大利润。dfs(i,j,2) 表示在 prices[0] 到 prices[i] 中完成至多 j 笔交易,第 i 天结束时处于做空中(空头状态)的最大利润。

此外,对于 dfs(i,j,0),在计算最大值时额外考虑在第 i 天买回股票(平空)的情况,即 dfs(i,j,2)−prices[i]。

vector<array<long long,3>> f(k+2,{LLONG_MIN/2,LLONG_MIN/2,LLONG_MIN/2});

下标 0~k+1(三个状态 - 二维数组)

class Solution { public: long long maximumProfit(vector<int>& prices, int k) { int n=prices.size(); vector<array<long long,3>> f(k+2,{LLONG_MIN/2,LLONG_MIN/2,LLONG_MIN/2}); for(int j=1;j<=k+1;j++) f[j][0]=0; //保证f[j-1]不越界,j从1开始 for(int p:prices){ for(int j=k+1;j>0;j--){ f[j][0]=max(f[j][0],max(f[j][1]+p,f[j][2]-p)); f[j][1]=max(f[j][1],f[j-1][0]-p); f[j][2]=max(f[j][2],f[j-1][0]+p); } } return f[k+1][0]; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 4:35:37

17、Linux文件与目录操作全解析

Linux文件与目录操作全解析 1. 文件与目录导航 在Linux系统中, ls 命令是用于列出文件和目录的常用工具。默认情况下, ls 会按照文件名对文件和目录进行排序,并且大写字母开头的文件或目录会排在小写字母开头的前面。例如,执行以下命令: ls输出可能会显示 /bin/l…

作者头像 李华
网站建设 2026/9/10 1:20:07

21、Linux系统进程与包管理全解析

Linux系统进程与包管理全解析 1. 引言 计算机是动态且多功能的机器,能借助众多工具完成各类任务。在Linux系统中,管理这些工具主要涉及软件包的安装、卸载和升级,以及对运行中程序(即进程)的管理,同时还包括对记录程序运行细节的日志文件的处理。 2. 理解软件包管理 …

作者头像 李华
网站建设 2026/9/11 14:46:14

二叉排序树的插入、先序/中序/后序/层次遍历、节点查询

一、概念二叉排序树&#xff08;也叫二叉搜索树&#xff09;是一种基于 “左小右大” 规则的有序二叉树特点&#xff1a;左子节点的值 小于 父节点的值右子节点的值 大于 父节点的值每个节点由 3 部分组成&#xff08;类 / 对象结构&#xff09;&#xff1a;lChild&#xff1a;…

作者头像 李华
网站建设 2026/9/11 10:48:51

如何在 Spring Boot 中接入 Amazon ElastiCache

缓存在服务端是一个非常重要的东西&#xff0c;今天我们来聊聊怎么把 Amazon ElastiCache应用整合到 Spring Boot 上&#xff0c;让服务响应提速、系统整体轻盈起来。一、为什么你迟早要上缓存你有多少次在日志里看着那几百毫秒的 SQL 延迟叹气&#xff1f;尤其当系统访问量上去…

作者头像 李华
网站建设 2026/9/11 22:43:22

基于51单片机的血糖步数测量仪

目录 具体实现功能 设计介绍 资料内容 全部内容 资料获取 具体实现功能 具体功能&#xff1a; &#xff08;1&#xff09;按键控制启动或停止&#xff0c;按下按键后电机转动&#xff0c;表示开始步行&#xff0c;再次按键按下&#xff0c;电机停止转动&#xff0c;表示停…

作者头像 李华
网站建设 2026/9/11 22:31:20

Linux C/C++ 学习日记(51):内存池

注&#xff1a;该文用于个人学习记录和知识交流&#xff0c;如有不足&#xff0c;欢迎指点。 一、指针和内存大小对齐是什么&#xff1f; 1. 内存分配时的指针对齐&#xff08;必须&#xff09;&#xff1a;也称为内存对齐 结论&#xff1a;malloc/posix_memalign 等分配函数…

作者头像 李华