这是01背包,需要倒序枚举
by Telesto @ 2020-01-15 15:04:53
如果正序枚举会出现以下现象:
1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0
这是现在的dp数组
如果接下来我们加入一个价值为3,容量为4的物品呢?
1 2 3 4 5 6 7 8 9
0 0 0 3 3 3 3 ??
前7是正常的因为他们读取的状态为没有加入该物品时的状态。
但是第8要读取8-4=4,第4个值,也就是3,已经在该层修改过的状态。
这样就会导致一个物品被重复使用。
by Telesto @ 2020-01-15 15:09:50
而倒序枚举并不会使用当层的状态:
因为i-w是它所调用的状态
如果正序遍历,那么因为i肯定比i-w大,所以i-w肯定比i遍历到的时间要靠前,这一个物品就已经在i-w时选用了
而倒序遍历,那么因为i肯定比i-w大,所以i-w肯定比i遍历到的时间要靠后,这一个物品就一定不会在i-w时使用
by Telesto @ 2020-01-15 15:14:20
我建议你去找专门介绍背包问题的博客看
我太菜了,讲得不好
by Telesto @ 2020-01-15 15:14:56
吃瓜群众(连滚带爬光速逃)
by LINKIN_PARK @ 2020-01-15 15:36:47
@[CorCor_corvus](/user/176596) 替我同学感谢你!
by Rairn @ 2020-01-20 18:19:22