給定n
種物品, 每種物品都有無限個. 第i
個物品的體積為a[i]
, 價值為v[i]
.
再給定乙個容量為m
的揹包. 問可以裝入揹包的最大價值是多少?
樣例 1:
輸入: a = [2, 3, 5, 7], v = [1, 5, 2, 4], m = 10
輸出: 15
解釋: 裝入三個物品 1 (a[1] = 3, v[1] = 5), 總價值 15.
樣例 2:
輸入: a = [1, 2, 3], v = [1, 2, 3], m = 5
輸出: 5
解釋: 策略不唯一. 比如, 裝入五個物品 0 (a[0] = 1, v[0] = 1).
我的理解這個問題和揹包問題5類似,只不過同樣是將重量改為了價值。
因此假設設f[i][w] 表示 用前i個物品拼出重量w時最大總價值
class
solution
:"""
@param a: an integer array
@param v: an integer array
@param m: an integer
@return: an array
"""defbackpackiii
(self, a, v, m)
:# write your code here
iflen
(v)==
0or m==0or
len(a)==0
:return
0 dp=[0
]*(m+1
)for i in
range(1
,m+1):
for j in
range
(len
(a))
:if i>=a[j]
: dp[i]
=max
(dp[i]
,dp[i-a[j]
]+v[j]
)#注意對比與揹包問題5的區別
return dp[m]
揹包型動態規劃 揹包問題1
在n個物品中挑選若干物品裝入揹包,最多能裝多滿?假設揹包的大小為m,每個物品的大小為a i 示例 樣例 1 輸入 3,4,8,5 backpack size 10 輸出 9 樣例 2 輸入 2,3,5,7 backpack size 12 輸出 12 首先要明確一點,在揹包問題中,陣列大小和總稱重有...
揹包型動態規劃 揹包問題6
給出乙個都是正整數的陣列nums,其中沒有重複的數。從中找出所有的和為target的組合個數。示例 輸入 nums 1,2,4 和 target 4 輸出 6 解釋 可能的所有組合有 1,1,1,1 1,1,2 1,2,1 2,1,1 2,2 4 和揹包問題5唯一的區別是 組合中數字可以按照不同的順...
動態規劃揹包問題 01揹包
問題描述 n種物品,每種乙個。第i種物品的體積為vi,重量為wi。選一些物品裝到容量為c的揹包,使得揹包內物品不超過c的前提下,重量最大。問題分析 宣告乙個f n c 的陣列。f i j 表示把前i件物品都裝到容量為j的揹包所獲得的最大重量。當 j v i 時,揹包容量不足以放下第 i 件物品,f ...