模版题-动态规划-买卖股票的最佳时机IV ( 多状态 多维数组简化 )

管理员
```python class Solution: # 一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。 # 设计一个算法来计算所能获取的最大利润。最多可以完成 k 笔交易。也就是说,最多可以买 k 次,卖 k 次。 # 注意:不能同时参与多笔交易(必须在再次购买前出售掉之前的股票)。 def maxProfit(self, k: int, prices: List[int]) -> int: # 同 '买卖股票的最佳时机III' —— 多状态 n = len( prices ) if n == 0 or k == 0: return 0 # dp[ i ][ j ][ 0, 1 ] 第i天时,已完成j笔交易,且未持有或持有股票的最大利润 dp = [ [ [ 0, 0 ] for _ in range( k + 1 ) ] for _ in range( n ) ] # 初始值 for i in range( 1, k + 1 ): # 理解为同一天买入->买出 ... dp[ 0 ][ i ][ 0 ] = 0 dp[ 0 ][ i ][ 1 ] = -prices[ 0 ] for i in range( 1, n ): for j in range( 1, k + 1 ): # 第i天 第j次 未持有的最大利润 dp[ i ][ j ][ 0 ] = max( dp[ i - 1 ][ j ][ 0 ], dp[ i - 1 ][ j ][ 1 ] + prices[ i ] ) # 第i天 第j次 持有的最大利润 dp[ i ][ j ][ 1 ] = max( dp[ i - 1 ][ j ][ 1 ], dp[ i - 1 ][ j - 1 ][ 0 ] - prices[ i ] ) return dp[ n - 1 ][ k ][ 0 ] ```
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧