題目:
有 n 個物品和乙個大小為 m 的揹包. 給定陣列 a 表示每個物品的大小和陣列 v 表示每個物品的價值.
問最多能裝入揹包的總價值是多大?
樣例樣例 1:
輸入: m = 10, a = [2, 3, 5, 7], v = [1, 5, 2, 4]
輸出: 9
解釋: 裝入 a[1] 和 a[3] 可以得到最大價值, v[1] + v[3] = 9
樣例 2:
輸入: m = 10, a = [2, 3, 8], v = [2, 5, 8]
輸出: 10
解釋: 裝入 a[0] 和 a[2] 可以得到最大價值, v[0] + v[2] = 10
注意事項
a[i], v[i], n, m 均為整數
你不能將物品進行切分
你所挑選的要裝入揹包的物品的總大小不能超過 m
每個物品只能取一次
解題思路:0-1揹包問題,分別計算當前物品放入和不放入揹包的重量取最大值
public
class
solution
else}}
return dp[len]
[m];
}}
使用一位陣列對空間進行優化
public
class
solution
}return dp[m];}
}
多重揹包問題 II
有 n 種物品和乙個容量是 v 的揹包。第 i 種物品最多有 si 件,每件體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使物品體積總和不超過揹包容量,且價值總和最大。輸出最大價值。輸入格式 第一行兩個整數,n,v,用空格隔開,分別表示物品種數和揹包容積。接下來有 n 行,每行三個整數 vi...
多重揹包問題II
多重揹包問題ii 總體積是m,每個小物品的體積是a i 每個小物品的數量是b i 每個小物品的價值是c i 求能夠放入揹包內的最大物品能夠獲得的最大價值 和上乙個很類似 上一題體積就是價值,這裡的價值是單獨定義了 狀態轉移方程 不放a i f i j f i 1 j 放a j 可放多個設為k,k m...
多重揹包問題 II
有 n 種物品和乙個容量是 v 的揹包。第 i 種物品最多有 si 件,每件體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使物品體積總和不超過揹包容量,且價值總和最大。輸出最大價值。輸入格式 第一行兩個整數,n,v,用空格隔開,分別表示物品種數和揹包容積。接下來有 n 行,每行三個整數 vi...