DP_stock.md

思路

  1. dp定义: 第i天,k第i天的最大交易次数上限,0 不持有, 1持有

  2. 递推公式

    dp[i][k][1]今天选择buy的时候前一天k为什么减1

    对于dp[i][k][0] = max(dp[i-1][k][0], dp[i-1][k][1] + prices[i])
                  max( 今天选择 rest,        今天选择 sell      )
                  
    1、昨天就没有持有,且截至昨天最大交易次数限制为k;今天选择rest,所以今天还是没有持有,最大交易次数限制依然为k
    2、昨天持有股票,且截至昨天最大交易次数限制为k;但是今天sell了,所以今天没有持有股票了,最大交易次数限制依然为k
    
    对于dp[i][k][1] = max(dp[i-1][k][1], dp[i-1][k-1][0] - prices[i])
                  max( 今天选择 rest,         今天选择 buy        )
    1、昨天就持有着股票,且截至昨天最大交易次数限制为k;然后今天选择rest,所以今天还持有着股票,最大交易次数限制依然为k
    2、昨天没有持有,且截至昨天最大交易次数限制为k - 1;但今天我选择buy,所以今天持有股票,最大交易次数限制为k
  3. 根据递推公式确定base case

  4. 确定状态的遍历顺序(多状态的遍历先后)

  5. 举例推导 dp 数组(打印 dp 数组)

股票系列问题

Last updated