uva 624 CD(01背包问题)输出最小字典序是个问题虽然题目不要求

此题就是赤裸的01背包问题,不过路径是个问题,一开始用逆推得到的程序最后一组数据与题目不符合,我尝试交了一发竟然A了,不过发觉最后一组是按字典序,逆推得到的即不是反字典序也不是字典序。。只不过是其中一组解,此题用的是special judge所以都可以过,我决定想办法得到字典序最小的路径。

最后当然解决了,用vector去保存每一个到达这个背包体积的字典序最小路径,如果遇到当前物品放入的价值跟不放入的价值是一样的,就需要对比2个路径了,从2个vector的头开始对比,如果前者的大于后者,那么就不更新,不放入的字典序最小,反之就更新。

放2个测试数据:

9 4 1 3 4 5
9 4 1 4 3 5

2个答案都是1 3 5 sum:9

这里放2个AC代码,前者是普通的逆推,后者则是字典序输出的路径,速度肯定是前者快。

code 1:

#include<cstdio>
#include<ctype.h>
#include<alg
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值