动态规划,多重背包,保存路径,用完全背包的方法做多重背包(Charlie's Change,poj 1787)

就是用拆分物品的方法做的多重背包啦,时间复杂度为O(V∑logN[i]),空间复杂度为O(V)。由于是拆分物品,所以保存路径时不但要记录转移前的位置,还要记录当前硬币的类型以及使用的个数,输出前沿着路径找回去统计一下个数就好啦。一直WA不知所措,以为是算法问题一直找BUG,后来发现原来是一个quarters本来是25cents抄成了15cents。最后是自己带数据去测试才找到问题所在。写了这么多题觉得自己带数据找BUG才是王道= =。无论是交之前检查还是交之后WA回来找BUG都很不错。在比赛时尽量别太着急着去交代码吧,要拿出如果交上去WA了怎么办的心态去调试。尽量先检查几遍代码,实在找不到BUG或觉得应该不会错了就果断自己带一些数据再去搞一搞。


如果用完全背包的做法去做多重背包,就需要用到一个used数组,时间复杂度为O(V),空间复杂度为O(V)。


一共就4种物品所以当做N=4为常数了,否则正常的时间复杂度为:O(VN)。


参考1:http://blog.csdn.net/libin56842/article/details/9470687 拆分物品法

参考2:http:/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值