當前位置:股票大全官網 - 股票投資 - 遞歸與dp在解決窮舉問題中的關系

遞歸與dp在解決窮舉問題中的關系

當壹些問題需要窮舉時,有時遞歸和dp都可以求解,比如p120,三角形最小路徑之和。那麽這兩種解題方式有什麽區別和聯系呢?

* * *相同點:

1)他們在解決問題時,要抓住“狀態”和“選擇”兩個核心。明確了“狀態”和“選擇”,問題就容易解決了。

2)帶memo優化的遞歸等價於dp。遞歸是歸納,自上而下;Dp是演繹法,自下而上(當然dp也可以是自上而下)。

差異:

1)遞歸是窮盡所有選項,根據選項更新狀態;Dp是所有狀態的詳盡列表,並根據狀態做出選擇。

Dp問題解決方法論:1)明確狀態;2)窮盡所有狀態;3)根據選擇更新狀態,完成狀態轉移框架(即遞歸公式)。

以p121的股票交易問題為例,有三種狀態,第壹種是天數,第二種是允許交易的最大次數,第三種是當前持有狀態。

記得解dp的時候怎麽解釋狀態,狀態要翻譯成自然語言才能理解。比如dp[3][2][1]的意思就是:今天是第三天,我現在手裏有股票,到目前為止最多做了兩筆交易。比如dp[2][3][0]的含義:今天是第二天。我現在手裏沒有股票,至今最多交易過三次。最後的答案是dp[n-1][K][0],即最後壹天,最多允許K筆交易,最多能獲得多少利潤。

完成了“狀態”的詳盡列表後,我們需要考慮每個“狀態”有哪些“選項”以及如何更新它。這個過程就是推導dp遞推公式的過程。最後,不要忘記badcase。所有這些步驟完成後,就得到最終的遞推公式。