买卖股票的最佳时机三 环球资讯

来源:个人图书馆-激流一舟   时间:2023-06-05 09:43:20

导读 ^_^

买卖股票的系列问题三!这回的限制是全局最多能买卖两次操作。

题目

leetcode 123


(相关资料图)

代码与思路

注意:这里的2次是最多两次

确定dp数组以及下标的含义

dp[i][j]中 i表示第i天,j为 [0 - 4] 五个状态,dp[i][j]表示第i天状态j所剩最大现金。

没有操作

第一次买入

第一次卖出

第二次买入

第二次卖出

递归公式

dp[i][1]状态,有两个具体操作:

操作一:第i天买入股票了,那么dp[i][1] = dp[i-1][0] - prices[i]

操作二:第i天没有操作,而是沿用前一天买入的状态,即:dp[i][1] = dp[i - 1][1]

dp[i][2]也有两个操作:

操作一:第i天卖出股票了,那么dp[i][2] = dp[i - 1][1] + prices[i]

操作二:第i天没有操作,沿用前一天卖出股票的状态,即:dp[i][2] = dp[i - 1][2]

同理可推出剩下状态部分:dp[i][3] = max(dp[i - 1][3], dp[i - 1][2] - prices[i]);dp[i][4] = max(dp[i - 1][4], dp[i - 1][3] + prices[i]);

//买卖股票最佳时机IIIclassSolution{public:intmaxProfit(vector&prices){if(prices.size()==0)return0;vector>dp(prices.size(),vector(5,0));dp[0][1]=-prices[0];dp[0][3]=-prices[0];//相当于第0天买入买出,再买入for(inti=1;i

#谢谢你的观看!

^_^

最新资讯

业界