(51/60)买卖股票的最佳时机含冷冻期、买卖股票的最佳时机含手续费

day51

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

leetcode:309. 买卖股票的最佳时机含冷冻期

动态规划

代码实现

/*
意义:下标为i时各种情况的收益
dp[i][0] 持有
dp[i][1] 当天卖出
dp[i][2] 之前不持有
递推:
dp[i][0] = max(dp[i-1][0],dp[i-1][2] - prices[i]); // 之前持有、之前不持有且当天持有
dp[i][1] = dp[i-1][0] + prices[i]; // 当天卖出(持有->当天卖出)
dp[i][2] = max(dp[i-1][2],dp[i-1][1]); // 之前不持有、前一天当天卖出
初始化:
dp[0][0] = -prices[0];
dp[0][1] = 0; // 没意义占位
dp[0][2] = 0;
*/
class Solution {
public:
int maxProfit(vector<int>& prices) {
vector<vector<int>> dp(prices.size(),vector<int>(3,0));
dp[0][0] = -prices[0];
for(int i = 1;i < prices.size();i++){
dp[i][0] = max(dp[i-1][0],dp[i-1][2] - prices[i]); // 之前持有、之前不持有且当天持有
dp[i][1] = dp[i-1][0] + prices[i]; // 当天卖出
dp[i][2] = max(dp[i-1][2],dp[i-1][1]); // 之前不持有、前一天当天卖出
}
return max(dp[prices.size()-1][1],dp[prices.size()-1][2]);
}
};

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

leetcode:714. 买卖股票的最佳时机含手续费

动态规划

代码实现

/*
意义:下标为i的各类型最大收益为
dp[i][0]不持有
dp[i][1]持有
递推:
dp[i][0] = max(dp[i-1][0],dp[i-1][1] + prices[i] - fee); // 前一天不持有、前一天持有当天卖出
dp[i][1] = max(dp[i-1][1],dp[i-1][0] - prices[i]); // 前一天持有、前一天不持有当天持有
初始化:
dp[0][0] = 0;
dp[0][1] = -prices[0];
*/
class Solution {
public:
int maxProfit(vector<int>& prices, int fee) {
vector<vector<int>> dp(prices.size(),vector<int>(2,0));
int count = 0;
dp[0][1] = -prices[0];
for(int i = 1;i < prices.size();i++){
dp[i][0] = max(dp[i-1][0],dp[i-1][1] + prices[i] - fee);
dp[i][1] = max(dp[i-1][1],dp[i-1][0] - prices[i]); // 前一天持有、前一天不持有当天持有
}
return dp[prices.size()-1][0];
}
};
posted @   Tazdingo  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示