假定物品为i,背包容量为v:
之前靠贪心解,优先放性价比最高的。但是贪心只适用于可以连续分割
完全背包(参见hiho/week7):
物品数量无限。
a[i]=max(a[i],a[i-c]+w);//a[i]是消耗不超过i时获得的最大收益;
对于每个物品,c是其消耗,w是其收益;
0-1背包(参见hiho/week6):
物品只有一件。i顺序,v逆序处理。
f[i][v]=max{ f[i-1][v], f[i-1][v-c[i]]+w[i] }即前i件进入背包获取的最大价值;
压缩空间得f[v]=max{f[v](不放),f[v-c[i]]+wi}
多重背包:
加判断,如果物品数量×代价小于容量,就按完全背包算;
否则二进制成0-1背包来解决。
背包九讲说的很细了 慢慢看吧。
网友评论