揹包型動態規劃 揹包問題3

2021-10-18 23:02:40 字數 1186 閱讀 6564

給定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 ...