微信辅助网站制作,住房和城乡建设局是干嘛的,佛山网站建设全方位服务,重庆荣昌网站建设309.最佳买卖股票时机含冷冻期
首先一共有几种状态需要考虑
买入#xff0c;卖出#xff0c;处于冷冻期#xff0c;买入后不动#xff0c;卖出后不动#xff0c;前一天卖出#xff08;今天处于冷冻期#xff09;#xff0c;冷冻期后买入#xff0c;
将所有情况总结…309.最佳买卖股票时机含冷冻期
首先一共有几种状态需要考虑
买入卖出处于冷冻期买入后不动卖出后不动前一天卖出今天处于冷冻期冷冻期后买入
将所有情况总结成4种情况
1.买入股票的状态当天买入买入后不动冷冻期后买入dp[i][0]
2.卖出股票的状态
21当天卖出 dp[i][1]
22处于卖出的状态在昨天/前天/更早之前已经卖出dp[i][2]
3.冷冻期dp[i][3] 递推公式为
dp[i][0]由dp[i-1][0]、dp[i-1][2]、dp[i-1][3]推导
dp[i][1]由dp[i-1][0]
dp[i][2]由dp[i-1][2],dp[i-1][0]
dp[i][3]由dp[i-1][1]
这里有个问题需要处理一下如果是昨天卖出股票处于卖出的状态那么今天一定是处于冷冻期dp[i][3]今天是无法进入买入股票的状态的也就是dp[i][0]不能根据dp[i-1][2]推导出来 对此我的理解是昨天卖出今天冷冻这种卖出状态的特殊情况已经在dp[i][3]的推导中考虑到了所以dp[i][0]的推导中不需要考虑这种情况 接下来是初始值的计算
dp[0][0]-price[0]dp[0][1]0
关键是其他情况,卖出状态和冷冻期都是不可能在第一天就发生的这种情况的初始值需要我们以推导后续结果正确的前提下单独设置
dp[1][0]可由dp[0][3]推导在第一天冷冻第二天买入股票的情况下要想推导正确只能将dp[0][3]设置为0dp[0][2]同理