0-1背包问题

问题:N个物品,分别有(s体积,v价值)两个属性。一个背包,总的容量为C。 要怎么装,使得不超过C的情况下,总价值最大?

特点:每种物品仅有一件,可以选择放或不放。

状态转移:V(i,j),表示从i个中取出来体积为j的价值。 目标:V(n,C)。

方程:

V(i,j) = 0 ,if(i ==0 || j==0),即不装,就没有价值。
V(i,j) = V(i-1,j),if (j<si),体积j小于Si,装不下,那么也就是和前一个一致。
V(i,j) = max{ V(i-1,j),V(i-1,j-Si) + Vi },如果可以装得下,那么取装与不装的最大值。

计算:使用(n+1) * (C + 1) 打表即可算出。

results matching ""

    No results matching ""