【动态规划】买卖股票的最佳时期含冷冻期

一、买卖股票的最佳时期含冷冻期

题目:
买卖股票的最佳时期含冷冻期

在这里插入图片描述

动态规划五部曲

  • 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.填表顺序

从左到右填表,三个表一起填。

扫描二维码关注公众号,回复: 17168382 查看本文章
  • 5.返回值

如果第n-1天处于买入状态,说明手里还有股票没卖出去,则不可能会是最大利润。

所以最大值应该从第n-1天是可交易状态或者是冷冻期状态的最大值。

return max(dp[n-1][1],dp[n-1][2]);

猜你喜欢

转载自blog.csdn.net/w2915w/article/details/134415264