這道題做起來的時候比較困難,有些地方不太容易想清楚。
首先應用DP的思路
DP[i][j] 表示 在前j天進行最多i次交易時的最大profits
這是容易考慮到,dp[i][j] = max(dp[i][j - 1] + * )
即相當于分廠兩種狀況,即第j天參與交易與第j天不參與交易。
若第j天不參與交易,則為dp第一項dp[i][j - 1]
若第j天參與交易,則應為第j天賣出了股票。
此時,不能夠簡單地直接應用dp[i - 1][j - 1] + diff,因為最佳的買入點未必是j - 1.
因此應該維護數組,buy, 記錄當前狀態是買入時的最大利潤。
因此迭代公式為:
buy[i][j] = max(
dp[i][j] = max(dp[i][j - 1], buy[i][j] + prices[j])