文章目录
- 一、买卖股票的最佳时期含冷冻期
- 动态规划五部曲
一、买卖股票的最佳时期含冷冻期
题目:
买卖股票的最佳时期含冷冻期
动态规划五部曲
- 1.确定dp的含义
由题意可知,这里有三种状态
1.买入状态:dp[i][0]:表示第i天处于买入状态时的最大利润为dp[i][0]
2.可交易状态:dp[i][1]:表示第i天处于可交易状态时的最大利润为dp[i][1]
3.冷冻状态:dp[i][2]:表示第i天处于冷冻状态时的最大利润为dp[i][2]
- 2.状态转移方程
用状态机分析:
状态机就是对每一种状态,分析能否由自己到自己,由其他状态到自己的过程。
这样能遍历所有情况。
dp[i][0] = max(dp[i-1][0], dp[i-1][1] - price[i]);
dp[i][1] = max(dp[i-1][1],dp[i-1][2]);
dp[i][2] = dp[i-1][0] + prices[i];
- 3.初始化
由上面的分析可知,
dp[0][0] = -price[i];
dp[0][1] = 0;
dp[0][2] = 0;
- 4.填表顺序
从左到右填表,三个表一起填。
- 5.返回值
如果第n-1天处于买入状态,说明手里还有股票没卖出去,则不可能会是最大利润。
所以最大值应该从第n-1天是可交易状态或者是冷冻期状态的最大值。
return max(dp[n-1][1],dp[n-1][2]);