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]為最大價值…
