1. 程式人生 > >貪心法解決連續揹包問題

貪心法解決連續揹包問題

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=1
         while 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)