揹包問題 II

2021-10-10 21:23:48 字數 745 閱讀 6274

題目:

有 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...