這道題做起來(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天賣(mài)出了股票哥倔。
此時(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])