揹包問題解析

2021-06-12 02:25:14 字數 520 閱讀 2568

今天看到演算法:c語言實現這本書 第五章遞迴與樹 中 揹包問題,想到對這個問題理解不夠透徹. 希望利用第一篇技術部落格好好的吃透它.

揹包問題是什麼?

設有i類不同大小和價值的物品,揹包的可用容積為cap,進行合理的物品選擇使得所裝入的物品價值最大.

揹包問題解法?

設定:揹包大小為cap,對應第i項物品記為item[i],

定義結構體:

typedef struct

item;

遞迴實現 大量的重複計算

int knap(int cap)

maxknown[m] = max; itemknown[m] = items[maxi];

return max;

**分析:儲存項的索引,以便能夠在計算之後重建揹包的內容,如果希望itemknown[m]在揹包中,那麼餘下的內容就跟大小為m-itemknown[m].size的最優揹包內容一致,因此,itemknown[m-item[m].szie]在揹包裡,以此類推。

動態規劃繼續思考中...

揹包問題解析

一.最簡單的揹包問題 01揹包 1.題 有n件物品和乙個容量為v的揹包。第i件物品的體積是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的體積總和不超過揹包容量,且價值總和最大。2.思路 每乙個物品可以放也可以不放,因此比較放的時候的價值和不放的時候的價值,用max函式比較 3.方程 即f...

揹包問題解析

01揹包問題 有n件物品和乙個容量為v的揹包。第i件物品的容量是v i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。解析 每件物品有且僅有一件,可以放或不放。f i j 表示前i件物品放入容量為j的揹包的最大價值。狀態轉移方程 for i in 1 n for j in 1 m f i j...

超大揹包問題題解

有 n nn 個重量和價值分別為 w iw i wi 和 v iv i vi 的物品。從這些物品中挑選出總重量不超過 w ww 的物品放入揹包中,求揹包裡物品價值總和的最大值。n wv 1w1v 2w2.vnw nn space w v 1 space w 1 v 2 space w 2 v n s...