1. ZeroOnePack

題目

N件物品和一個容量為V的背包。第i件物品的費用是c[i],價值是w[i]。求解將哪些物品裝入背包可使價值總和最大。

關鍵碼:

        for(i=0;i<nPack;++i)
            
for(j=MaxVolume;j>=v[i];--j)
                Dp[j]
>?=Dp[j-v[i]]+w[i];
        cout
<<Dp[MaxVolume]<<endl;
// 最后Dp[MaxVolume]為最大價值…

 

2. CompletePack

題目

N種物品和一個容量為V的背包,每種物品都有無限件可用。第i種物品的費用是c[i],價值是w[i]。求解將哪些物品裝入背包可使這些物品的費用總和不超過背包容量,且價值總和最大。

關鍵碼:

        for(i=0;i<nPack;++i)
            
for(j=v[i];j<=MaxVolume;++j)
                Dp[j]
>?=Dp[j-v[i]]+w[i];
        cout
<<Dp[MaxVolume]<<endl;
//最后Dp[MaxVolume]為最大價值…