poj1011(深搜+剪枝)

该博客介绍了如何用深搜和剪枝策略解决POJ1011问题,即如何重组m根木棍成尽可能多且等长的木棍。关键点包括:1) 当长度无法整除总长度时剪枝;2) 木棍按长度降序排列;3) 搜索过程中避免无效操作,如不替换第一根或最后一根木棍;4) 同长度的木棍一旦试过失败则不再尝试。文章提供了相应的代码实现。
摘要由CSDN通过智能技术生成

题意:给m根木棍,将它们重新拼成n根一样长的木棍,并使得n尽量大(即每个新木棍尽量短)。


解法:经典的搜索题目。从小到大枚举拼成的新木棍长度,每次枚举进行一次深搜。这题关键是如何剪枝。

         1、当枚举的长度不能整除总长度的时候,剪枝;(这个很显然)

         2、先将木棍从长到短排序,枚举时先尝试长的木棍。(先枚举长的可以使得搜索深度不至于过深)

         3、深搜时,不要企图通过换掉一个新木棍的第一根来改变失败的局面(换掉第一根A,那么A也会在以后的新木棍中被使用,但是已经证明了A无法拼成了,所以不必再尝试下去了)

         4、不要企图换掉新木棍的最后一根来改变失败的局面。(同理3)

         5、如果一根木棍试过不行之后,不用再尝试将其换为之后一样长的木棍了。(很显然的剪枝)<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值