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