揹包問題 01 完全 多重

2021-07-11 02:36:45 字數 1022 閱讀 6429

題目:n件物品,容量為v的揹包,第i件的體積為c[i],價值為w[i];

特點:每種物品只有一件,可以選或者不選

for i=1..n

for v=v..0

f[v]=max;

tip:

初始化的細節問題:

在求最優解的揹包問題中,一般有兩種不同的問法:1、要求「恰好裝滿揹包」時的最優解;2、求小於等於揹包容量的最優解,即不一定恰好裝滿揹包。

這兩種問法,在初始化的時候是不同的。

1、要求「恰好裝滿揹包」時的最優解:

在初始化時除了f[0]為0其它f[1..v]均設為-∞,這樣就可以保證最終得到的f[n]是一種恰好裝滿揹包的最優解。如果不能恰好滿足揹包容量,即不能得到f[v]的最優值,則此時f[v]=-∞,這樣就能表示沒有找到恰好滿足揹包容量的最優值。

2、求小於等於揹包容量的最優解,即不一定恰好裝滿揹包:

如果並沒有要求必須把揹包裝滿,而是只希望價值盡量大,初始化時應該將f[0..v]全部設為0。

特點:每種物品都有無限件可用。

1..n

forv=0

..vf[v]

=max

多重揹包:

題目:有n種物品和乙個容量為v的揹包。第i種物品最多有num[i]件可用,每件費用是c[i],價值是w[i]。求解將哪些物品裝

揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。 

特點:每種物品的選擇有限制,也不一定是只能選一次,也不一定可以無限選,而是限定次數

分析:狀態轉移為:

ps:當然只會這些簡單的並沒有什麼卵用,還是要靈活掌握,很明顯我沒有明顯掌握,此刻需要艾特大神小黃

多維多重揹包問題 01揹包,完全揹包,多重揹包

csdn 專業it技術社群 登入 blog.csdn.net有n件物品和乙個容量為v的揹包。第i件物品的費用是w i 價值是v i 求將哪些物品裝入揹包可使價值總和最大。1.1空間優化 這要求在每次主迴圈中我們以 v v 0 的遞減順序計算 f v 這樣才能保證計算 f v 時 f v ci 儲存的...

01揹包問題 完全揹包問題 多重揹包問題

0 1 揹包問題 給定 n 種物品和乙個容量為 c 的揹包,物品 i 的重量是 wi,其價值為 vi 問 應該如何選擇裝入揹包的物品,使得裝入揹包中的物品的總價值最大?分析一波,面對每個物品,我們只有選擇拿取或者不拿兩種選擇,不能選擇裝入某物品的一部分,也不能裝入同一物品多次。解決辦法 宣告乙個 大...

01揹包問題 完全揹包問題 多重揹包問題

有n件物品和乙個容量為v 的揹包。放入第i件物品耗費的空間是ci,得到 的價值是wi。求解將哪些物品裝入揹包可使價值總和最大。這是最基礎的揹包問題,特點是 每種物品僅有一件,可以選擇放或不 放。用子問題定義狀態 即f i,v 表示前i件物品恰放入乙個容量為v的揹包可以 獲得的最大價值。則其狀態轉移方...