最佳买卖股票时机含冷冻期思维要点


题目链接

要点一:统一买和卖

从现金的角度思考,买,代表现金减少,卖代表现金增加。题目是求最后的最大现金值。

要点二:理解冷冻期引入后,对问题的影响

引入冷冻期后,第i天收盘后,所处的可能状态会增加,因为要考虑是否是冷冻期。

f[i][0] 表示第i天收盘后,持有股票时的最大收益。 根据情况,这个持有的股票可以来自前一天的结果,即f[i-1][0],也可以来自当天买入。 要能当天买入,则前一天应该是无股且不处于冷冻期的状态,即:f[i-1][2] - prices[i]。

f[i][0] = max(f[i-1][0], f[i-1][2] - prices[i])

f[i][1] 表示第i天收盘后,处于无股且处于冷冻期的最大收益。处于冷冻期,说明当天肯定是卖股了。 那么前一天肯定是持有股票的状态。即:

f[i][1] = f[i-1][0] + prices[i]

f[i][2] 表示第i天收盘后,处于无股且不处于冷冻期的状态的最大收益。不处于冷冻期,说明当天没有卖股,当天没卖股,还处于无股状态,只能说明前一天也是无股的,这又分为无股处于冷冻期和无股不处于冷冻期两种情况。

f[i][2] = max(f[i-1][1], f[i-1][2])


原创文章,转载请注明出处,否则拒绝转载!
本文链接:抬头看浏览器地址栏

上篇: matplotlib教程
下篇: 比特位计数