使用dp[i][k][0/1]表示状态(第i天,最多能交易几次,是否持有股票)。
那么
dp[i][k][0]=max(dp[i-1][k][0],dp[i-1][k][1]+price[i])
表示前一天没有持有股票,或者持有股票但是卖了
dp[i][k][1]=max(dp[i-1][k][1],dp[i-1][k-1][0]-price[i])
表示前一天持有股票,或者没有持有股票但是买了
当k=1,或者无穷大时,k可以简化
21. 买卖股票的最佳时机/C++(1次交易)
122. 买卖股票的最佳时机 II/C++(无限次交易,凑数,该题用贪心算法)
123. 买卖股票的最佳时机 III/C++(2次交易)
188. 买卖股票的最佳时机 IV/C++(最复杂,k次交易)
309. 最佳买卖股票时机含冷冻期/C++
714. 买卖股票的最佳时机含手续费/C++
本文深入解析使用动态规划解决股票交易问题的方法,涵盖一次至多次交易的最优策略,包括无限制交易、冷冻期及手续费等特殊情况。通过递推公式阐述不同交易次数下,持有与不持有股票状态的转换。
1176

被折叠的 条评论
为什么被折叠?



