貪心法解決連續揹包問題

2021-06-02 14:07:31 字數 546 閱讀 2633

continuousknapsack(w[1..n],v[1..n],l)

//input:n件物品的重量陣列w和價值陣列v,揹包承重l

//output:沒見物品放入揹包的重量陣列p[1..n],總價值c

for i=1 to n do

p[i]=0

r[i]=v[i]/w[i]

sort r in decreasing order,change the order v and w correspondingly

l=0;

k=1while l>l and k<=n do

if w[k]<=l-1

p[k]=w[k]

l+=w[k]

c+=v[k]

k++else

p[k]=l-1

l+=p[k]

c+=p[k]*r[k]

return p and c

該演算法的時間效率為θ(nlogn)

貪心法解決揹包問題

揹包問題 問題描述 給定n 種物品和乙個容量為c的揹包,物品i的重量是wi,其價值為vi,揹包問題是如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大。注意 和0 1揹包問題的區別,在揹包問題中,可以將某種物品的一部分裝入揹包中,但不可重複裝入。用貪心演算法求解揹包問題的關鍵是如何選擇貪心策略,...

貪心法解決0 1揹包問題

貪心法是指 在揹包沒有裝滿之前,只要能裝得下就裝進揹包.在使用貪心法解決0 1揹包問題主要在於分解方案和貪心選擇方案.貪心法不能保證最優解 為了盡可能的得到最優解,選擇物品時,總是選擇v i w i 最大的物品裝進去 所以在程式的開始,應首先對物品按照v i w i 從大到小進行排序,因此在排序的過...

揹包問題 (貪心法)

問題 給定n個物品和乙個容量為c的揹包,物品i的重量為wi,其價值為vi,揹包問題是如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大。注意和0 1揹包的區別,在揹包問題中,可以將某種物品的一部分裝入揹包中,但不可以重複裝入。想法 每次裝入單位價值最大的物品。物品重量放在陣列w n 中,價值存放...