当前位置: 首页 > news >正文

代码随想录第55天(动态规划):● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费

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

题目描述:

思路和想法:

 这道题相较于之前的题目,注重对状态的分析,这里分为四个状态。

(1)状态一,买入状态 dp[i][0]

  • 操作一:前一天就是持有状态(状态一)dp[i - 1][0]
  • 操作二:今天买入,两种情况①前一天是冷冻期(状态四),dp[i - 1][3] - prices[i]
  • ②前一天是保持卖出股票的状态dp[i - 1][1] - prices[i]

(2)状态二,保持卖出股票的状态 dp[i][1]  (还没卖出)

  • 操作一:前一天就是状态二 dp[i - 1][1]
  • 操作二:前一天是冷冻期(状态四) dp[i - 1][3]

(3)状态三,达到今天卖出的状态 dp[i - 1][0] + prices[i]

(4)状态四,冷冻期 dp[i - 1][2]

#include<vector>
using namespace std;
class Solution {
public:int maxProfit(vector<int>& prices) {//四个状态 买入,保持卖出、今天就卖出以及冷冻vector<vector<int>> dp(prices.size(),vector<int>(4,0));if(prices.size() == 0) return 0;dp[0][0] = -prices[0];for (int i = 1; i < prices.size(); i++){dp[i][0] = max(dp[i - 1][0],max(dp[i - 1][1] - prices[i], dp[i - 1][3] - prices[i]));dp[i][1] = max(dp[i - 1][1],dp[i - 1][3]);dp[i][2] = dp[i - 1][0] + prices[i];dp[i][3] = dp[i - 1][2];}return max(dp[prices.size() - 1][3], max(dp[prices.size() - 1][2],dp[prices.size() - 1][1]));}
};

二、最佳买卖股票时机含手续费

题目描述:

 思路和想法:

        这里的话,就两个状态,买入和保持卖出

(1)买入:dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]);

(2)卖出:dp[i][1] = max(dp[i - 1][1], dp[i -1][0] + prices[i] - fee);

class Solution {
public:int maxProfit(vector<int>& prices, int fee) {vector<vector<int>> dp(prices.size(),vector<int>(2,0));dp[0][0] = -prices[0];//0表示买入,1表示卖出for (int i = 1; i < prices.size(); 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][0] + prices[i] - fee);}return max(dp[prices.size() - 1][1], dp[prices.size() - 1][0]);}
};

http://www.lryc.cn/news/3400.html

相关文章:

  • 字符串装换整数(atoi)-力扣8-java
  • 毕业5年,从月薪3000到年薪40w,我掌握了那些核心技能?(建议收藏)
  • C++中的并行与并发
  • h2database源码解析-如何更新一条行记录
  • FyListen——生命周期监听器(设计原理之理解生命周期)
  • Element UI框架学习篇(六)
  • Python如何安装模块,python模块安装失败的原因以及解决办法
  • 《NFL橄榄球》:洛杉矶闪电·橄榄1号位
  • 4.7 Python设置代码格式
  • Zabbix 构建监控告警平台(五)
  • 2023关键词:挑战
  • Wifi wpa_supplicant 到驱动的联系
  • 【状态估计】基于二进制粒子群优化 (BPSO) 求解最佳 PMU优化配置研究【IEEE30、39、57、118节点】(Matlab代码实现)
  • python 将 .pdf 文件转为 .md
  • 【C语言】操作符详解
  • 微信小程序 学生选课系统--nodejs+vue
  • leaflet 加载geojson文件并显示图形(示例代码051)
  • 【Kafka】ZK和Kafka集群的安装和配置
  • 并发编程出现的问题以及解决方式
  • [ linux ] linux 命令英文全称及解释
  • C++11新特性
  • 【宝塔部署SpringBoot前后端不分离项目】含域名访问部署、数据库、反向代理、Nginx等配置
  • 从0到1一步一步玩转openEuler--11 openEuler基础配置-设置磁盘调度算法
  • 河道治理漂浮物识别监测系统 yolov7
  • 微信小程序 java ssm Springboot学生作业提交管理系统
  • 实战项目-课程潜在会员用户预测(朴素贝叶斯&神经网络)
  • ESP32设备驱动-定时器与定时器中断
  • 【JavaScript 逆向】安居客滑块逆向分析
  • 【STM32】【HAL库】遥控关灯1主机
  • Java 初始化块