01-Bag - 01背包
问题
现有个珠宝,已知第个珠宝的价值是,重量是。给你一个背包,你可以自由挑选珠宝装到背包中,但背包可以装载的最大重量为。求背包能够装载珠宝的最大价值。
解法
设为背包中放入前件物品,重量不大于的最大价值,其中,。有如下状态转移方程:
初始化,背包中没有放入任何珠宝时;
对于第个珠宝,若装入背包,则背包价值增大,背包的剩余重量(还能装载的重量)减小,即(其中);若不装入背包,则一切维持不变,即。选择这两种情形中的最大值;
即为个珠宝中重量不超过的最大价值。该算法的时间复杂度是。