[Algorihm][简单多状态DP问题][买卖股票的最佳时机含冷冻期][买卖股票的最佳时机含手续费]详细讲解

news2024/11/16 23:50:31

目录

  • 1.买卖股票的最佳时机含冷冻期
    • 1.题目链接
    • 买卖股票的最佳时机含冷冻期
    • 2.算法原理详解
    • 3.代码实现
  • 2.买卖股票的最佳时机含手续费
    • 1.题目链接
    • 2.算法原理详解
    • 3.代码实现


1.买卖股票的最佳时机含冷冻期

  • 1.题目链接

买卖股票的最佳时机含冷冻期

2.算法原理详解

  • 思路
    • 确定状态表示 -> dp[i][j]的含义:i -> 到了哪天,j -> 当天处于什么状态

      • dp[i][0]:第i天结束之后,处于"买入"状态,此时的最大利润
      • dp[i][1]:第i天结束之后,处于"可交易"状态,此时的最大利润
      • dp[i][2]:第i天结束之后,处于"冷冻期"状态,此时的最大利润
    • 推导状态转移方程:本题关系复杂,可以画图辅助

      • dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - p[i])
      • dp[i][1] = max(dp[i - 1][1], dp[i - 1][2])
      • dp[i][2] = dp[i - 1][0] + p[i]
        请添加图片描述
    • 初始化:

      • dp[0][0] = -p[0], dp[0][1] = dp[0][2] = 0
    • 确定填表顺序:从左往右,一次填写三个表

    • 确定返回值:max(dp[n - 1][1], dp[n - 2][2])


3.代码实现

int maxProfit(vector<int>& prices) 
{
    int n = prices.size();
    vector<vector<int>> dp(n, vector<int>(3));
    dp[0][0] = -prices[0];

    for(int i = 1; i < n; i++)
    {
        dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]);
        dp[i][1] = max(dp[i - 1][1], dp[i - 1][2]);
        dp[i][2] = dp[i - 1][0] + prices[i];
    }

    return max(dp[n - 1][1], dp[n - 1][2]);
}

2.买卖股票的最佳时机含手续费

1.题目链接

  • 买卖股票的最佳时机含手续费

2.算法原理详解

  • 思路
    • 确定状态表示 -> dp[i]的含义

      • i天结束之后,所能获得的最大利润
      • 本题,状态表示还可以继续细分:
        • f[i]:第i天结束之后,处于“买入”状态,此时的最大利润
        • g[i]:第i天结束之后,处于“卖出”状态,此时的最大利润
          请添加图片描述
    • 推导状态转移方程:本题关系复杂,可以画图辅助

      • f[i] = max(f[i - 1], g[i - 1] - p[i])
      • g[i] = max(g[i - 1], f[i - 1] + p[i] - fee)
        请添加图片描述
    • 初始化:

      • f[0] = -p[0], g[0] = 0
    • 确定填表顺序:从左往右,两个表一起填

    • 确定返回值:g[n - 1]


3.代码实现

int maxProfit(vector<int>& prices, int fee) 
{
    int n = prices.size();
    vector<int> f(n); // 买入
    vector<int> g(n); // 卖出
    f[0] = -prices[0];

    for(int i = 1; i < n; i++)
    {
        f[i] = max(f[i - 1], g[i - 1] - prices[i]);
        g[i] = max(g[i - 1], f[i - 1] + prices[i] - fee);
    }

    return g[n - 1];
}

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

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

相关文章

Realcome:AI赋能,引领虚拟博主创业新纪元

在数字化浪潮汹涌的时代&#xff0c;一个崭新的科技品牌正在崭露头角——Realcome&#xff0c;一家以AI智能交互服务为核心&#xff0c;为企业提供全方位数字化营销解决方案的科技服务公司。自2021年成立以来&#xff0c;Realcome凭借其前沿的技术和创新的理念&#xff0c;迅速…

漂流瓶挂机项目,聊天脚本赚钱新玩法,号称单机30-50+ (教程+软件)

一、项目简介&#xff1a; 漂流瓶挂机项目主要是通过使用探遇漂流瓶、音麦漂流瓶等聊天软件&#xff0c;为用户提供一个聊天赚钱的平台。男性用户需要充值后才能发送消息&#xff0c;而女性用户则可以通过接收消息赚取分红。男性用户发送给女性用户的消息费用大约在.1-.2元之间…

【openlayers系统学习】4.2Mapbox 样式渲染图层

二、Mapbox 样式渲染图层 显然我们目前的地图需要一些样式。 VectorTile​ 图层的样式与 Vector​ 图层的样式工作方式完全相同。那里描述的样式在这里也适用。 对于这样的地图&#xff0c;创建数据驱动的样式&#xff08;对矢量图层操作&#xff09;非常简单。但矢量切片也用…

自动驾驶技术现状与需求分析

随着科技的不断进步和智能化浪潮的席卷&#xff0c;自动驾驶技术已成为当今交通领域的热点话题。本文旨在深入探讨自动驾驶技术的当前发展状况&#xff0c;并对其未来的市场需求进行细致分析。首先&#xff0c;我们将回顾自动驾驶技术的起源、发展历程以及当前的技术水平&#…

自动驾驶---Perception之IPM图和BEV图

1 前言 IPM&#xff08;Inverse Perspective Mapping&#xff0c;逆透视变换&#xff09;图的历史可以追溯到计算机视觉和图像处理领域的发展。逆透视变换是一种用于消除图像中透视效应的技术&#xff0c;使得原本由于透视产生的形变得以纠正&#xff0c;进而更准确地描述和理解…

早餐店燃气安全岂能马虎?探头选择与年检必须到位

在现代都市生活中&#xff0c;早餐店作为人们日常生活中的重要一环&#xff0c;其安全性问题日益受到人们的关注。其中&#xff0c;燃气泄漏引发的火灾和爆炸事故尤为令人担忧。 因此&#xff0c;点式可燃气体报警器在早餐店中的应用显得尤为重要。 在这篇文章中&#xff0c;…

PyTorch深度学习实战(44)——基于 DETR 的目标检测模型

PyTorch深度学习实战&#xff08;44&#xff09;——基于 DETR 的目标检测模型 0. 前言1. Transformer1.1 Transformer 基础1.2 Transformer 架构 2. DETR2.1 DETR 架构2.2 实现 DETR 模型 3. 基于 DETR 实现目标检测3.1 数据加载与模型构建3.2 模型训练与测试 小结系列链接 0.…

防止CSRF攻击

防止CSRF攻击 跨站点请求伪造&#xff08;Cross-Site Request Forgery&#xff0c;简称CSRF&#xff09;是一种常见的网络攻击类型。当用户在受信任的站点上通过身份验证后&#xff0c;访问攻击者精心准备的恶意网站、电子邮件、博客、即时消息或程序时&#xff0c;可能会导致…

遥感信息SCI期刊,中科院1区,IF=7+,审稿速度非常快!

一、期刊名称 International Journal of Applied Earth Observation and Geoinformation 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;遥感 影响因子&#xff1a;7.5 中科院分区&#xff1a;1区 三、期刊征稿范围 《国际应用地球观测和地理信息杂志》…

ISCC2024个人挑战赛WP-MISC

&#xff08;非官方解&#xff0c;以下内容均互联网收集的信息和个人思路&#xff0c;仅供学习参考&#xff09; where is flag 下载附件&#xff0c;解压出pyc&#xff0c;然后到下面网址反编译 python反编译 - 在线工具 记住c&#xff0c;是密文&#xff0c; Key是 k5fg…

【QNX】Qnx IPC通信 Message-passing

Qnx IPC通信 Message-passing Message-passing介绍 QNX提供了多种IPC(Interprocess Communication )通信方式&#xff0c;包括Message-passing、Plus&#xff08;脉冲&#xff09;、Event、Signal、共享内存、Pipe&#xff0c;当然还有socket。 Message-passing是Qnx IPC的主…

远大阀门集团携创新产品亮相南京,展现石化行业新风采

2024年5月22日&#xff0c;备受瞩目的第八届中国石油和化工行业采购大会在江苏省南京市盛大开幕。作为石化行业物资采购领域极具影响力的年度盛会&#xff0c;本次大会吸引了众多国内外能源化工企业、化工新材料企业、工程公司以及相关领域的供应商参加。远大阀门集团作为特邀优…

【网络安全】Fortinet FortiSIEM 中存在严重未经身份验证的 RCE 漏洞:已发布 PoC

文章目录 什么是Fortinet Forti SIEMFortinet Advisor — FortiSIEM 内置生成式 AI 优势功能下一代 SOC 自动化通过链路分析实现可视化威胁猎捕 RCE 漏洞和 PoC如何降低影响推荐阅读 针对 Fortinet FortiSIEM 中一个严重的未经身份验证的远程代码执行漏洞&#xff08;CVE-2023-…

NVIDIA Orin/Jetson 平台+数字同轴GMSL 车载AI视觉方案,应用于车载,机器人等领域

专注于成像和视觉技术于近期正式发布了可适配NVIDIA DRIVE AGX Orin平台的一系列摄像头产品&#xff0c;该产品是自主开发的数字同轴GMSL2摄像头模组&#xff0c;可满足智能汽车的高质量成像需求。 目前&#xff0c;推出可适配于NVIDIA DRIVE AGX Orin平台的摄像头产品一共有11…

ubuntu安装Stable Video Diffusion(SVD)让图片动起来

目录 写在前面 一、克隆或下载项目 二、下载预训练模型 三、创建环境 四、安装依赖 五、启动项目 六、解决报错 1.预训练模型下不来 2.TiffWriter.write() got an unexpected keyword argument fps 3.安装ffmpeg 4.No module named scripts 七、测试 写在前面 Stab…

华为机考入门python3--(30)牛客30-字符串合并处理

分类&#xff1a;字符串、进制转换 知识点&#xff1a; 获取偶数下标的字符 even_chars my_str[::2] 获取奇数下标的字符 odd_chars my_str[1::2]) 翻转字符串 reversed_str my_str[::-1] 二进制转十进制 num int(reversed_binary, 2) 十进制转十六进制 …

JWT的生成

引依赖 生成JWT JWT校验 注意

Kubernetes(k8s) v1.30.1 本地集群部署 安装metallb 支持LoadBalancer 生产环境 推荐 BGP模式部署

1 metallb 安装参考:Kubernetes(k8s) v1.30.1 本地集群部署 默认不支持LoadBalancer metallb来解决-CSDN博客 2 删除 Layer 2 模式 配置 kubectl delete -f IPAddressPool.yaml kubectl delete -f L2Advertisement.yaml kubectl delete -f discuz-srv.yaml 3 配置 k8s Metal…

IDEA 2024.1安装与破解

一、下载 官网地址&#xff1a;https://www.jetbrains.com/idea/download/other.html 二、安装 傻瓜式安装即可 三、破解 3.1 破解程序 网站&#xff1a;https://3.jetbra.in/ 3.2 获取激活码 点击*号部分即可复制成功

【机器学习】——线性模型

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…