完美解決揹包問題 01揹包 完全揹包

2021-10-08 03:12:56 字數 831 閱讀 2963

01揹包

每種物品就有乙個

c = [3,2,6,7,1,4,9,5]#cost 單個物品所佔容量

v = [6,3,5,8,3,1,6,9]#每個物品的價值

target = 15 #揹包容量

f = [0 for i in range(0,target+1)] #初始化 元素個數為揹包大小加1(target+1)

n = len(c)

def zeroonebackpack(cost,value):

for i in reversed(range(cost,target+1)): #逆序遍歷

f[i] = max(f[i],f[i-cost]+value)

for i in range(0,n):

zeroonebackpack(c[i],v[i])

print (f[target])

完全揹包

每種物品有無數多個

c = [3,2,6,7,1,4,9,5]

v = [6,3,5,8,3,1,6,9]

target = 15

f = [0 for i in range(0,target+1)]

n = len(c)

def completebackpack(cost,value):

for i in range(cost,target+1):#這是和01揹包唯一的區別 正序遍歷

f[i] = max(f[i],f[i-cost]+value)

for i in range(0,n):

completebackpack(c[i],v[i])

print (f[target])

揹包問題(0 1揹包 完全揹包)

0 1揹包 有n件物品和乙個容量為v的揹包。第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。重要的點在於 每種物品僅有一件,可以選擇放 不放子問題 f i v 表示前i件物品恰好放入乙個 容量為v 的揹包可以獲得的最大價值。狀態轉移方程 遞推式 f i v max 考...

揹包問題 01揹包 完全揹包 多重揹包

01揹包和完全揹包的區別 01揹包的侷限在於每樣物品只有一種,每個物品都有乙個屬於自己的價值和重量,在給定的物品中選出揹包所能容納的最大重量,要求是價值最大 完全揹包與01揹包的不同在於完全揹包不限制每樣物品的個數,物品的價值和質量都與01揹包一樣,也同樣是求在給定大小的容量中,找出最大價值的選擇 ...

揹包問題(01揹包,完全揹包,多重揹包)

揹包問題 01揹包,完全揹包,多重揹包 近日為以下瑣事煩身 差不多要向學院提交專案申請了,本來是想做個多模式的im系統的,可是跟往屆通過審核的專案比起來,缺乏創新和研究價值,所以在文件上要多做手腳,花點心思。揹包問題,經典有揹包九講。不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票 記住,只有一張...