0-1背包問題背景
我們有n種物品,物品j的重量為wj,價格為pj。我們假定所有物品的重量和價格都是非負的。背包所能承受的最大重量為W。如果限定每種物品只能選擇0個或1個,則問題稱為0-1背包問題。

遞歸算法
假如背包的容量是C=6,物品的體積為w,對應的物品的價值為v。我們從最後一個物品開始,如果它的體積比背包剩餘容量小,它面臨著兩種選擇:1,放進背包;2,不放進背包。
如果它的體積比背包剩餘容量大,那麼就不能放進背包,n往前走。如上圖所示,每個物品都面臨著這種選擇,直到n<0,即沒物品可放。
下面為背包問題的遞歸算法。
遞歸算法的問題是,有好多的重複計算,時間複雜度為2的n次方,n為物品數量。
動態規划算法
動態規劃跟遞歸非常相似,不同的地方在於使用一個數組來記錄已經計算過的,避免重複計算。
在上面代碼中假如4行後就變為動態規劃了,時間複雜度也變為O(n*c)