Best Time to Buy and Sell Stock with Cooldown
题意
给定一个数组,数组中的每个元素代表某一天股票的价格,你可以买入一只股票然后卖出,当然这个在卖出前一定要买入,而且同一天之内只能买入或者卖出,当卖出以后至少得休息一天,问这样安排下能够收获的最大利益。
解法
动态规划。我们用buy[i]代表第i天买入时能够得到的最大收益,sell[i]代表第i天卖出时能够得到的最大收益。则
buy[i] = max(buy[i-1], sell[i-2]-prices[i]) # 注意限制,休息一天
sell[i] = max(sell[i-1], buy[i-1]+prices[i]) # 第一天买入,第二天可以卖出
得到状态转移方程以后就好写了。。dp就是这么简单粗暴(我指的是代码简单,,想法不简单Orz…)
代码
|
|