動態(tài)規(guī)劃之解題思路

一、定義

動態(tài)規(guī)劃(dynamic programming)簡稱DP,用于解決重疊子問題。

二、解題步驟

1、確定dp數(shù)組以及下標含義

2、確定狀態(tài)轉(zhuǎn)移方程

3、dp數(shù)組的初始化

題目有兩種可能,一種是要求背包恰好裝滿,一種是可以不裝滿(只要不超過容量就行)。

- 恰好裝滿。只需要初始化dp[0] 為 0, 其他初始化為負數(shù)即可。

- 可以不裝滿。 只需要全部初始化為 0,即可。

4、確定遍歷的順序

外層遍歷物品,還是外層遍歷容量;

以及容量從大到小遍歷,還是從小到大遍歷。

5、舉例檢驗

三、總結(jié)

遞歸和動態(tài)規(guī)劃都是將原問題拆成多個子問題然后求解,他們之間最本質(zhì)的區(qū)別是,動態(tài)規(guī)劃保存了子問題的解,避免重復計算。

動態(tài)規(guī)劃內(nèi)容很多,將從以下方面進行學習:

斐波拉契數(shù)列

背包(0-1背包,完全背包)。。。。。

參考資料:github分類詳解

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容