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 中,價值存放...