資料結構與演算法
從(重量, 價值)為 (2, 3)、(3, 4)、(4, 5)、(5, 6) 的4件物品中選擇,放入容量為8的背包。每件物品只有1個,且不能分割。在重量合計8以下的條件下,價值合計的最大值為多少?
- A7
- B9
- C10
查看答案與解析
正確答案:C. 10
選擇重量3與5的物品,重量為8,價值為 4 + 6 = 10,這就是最大值。重量2與5(價值9)或3與4(價值9)也放得進去,但達不到10;選3件時即使最輕的 2 + 3 + 4 也是9,超過容量。依單位重量價值由高到低放入的貪婪演算法,放入重量2與3(價值7)後,剩餘容量3放不下任何物品,停在7。動態規劃逐一物品更新「容量 c 以內可達到的最大價值」的表,對物品數 n 與容量 W 以 O(nW) 求出最佳值。
- A. 這是依單位重量價值由高到低放入的貪婪演算法的結果,不是最佳解。
- B. 這是重量2與5,或3與4的組合的價值,不是最大值。
- C. 正確。以重量3與5的物品剛好用完容量8,價值為10。