UVA307 小木棍 Sticks

这篇博客探讨了UVA307算法问题中的小木棍问题,主要关注如何通过深搜和剪枝来优化解决方案。文章详细介绍了5种剪枝类型,并特别强调了排除等效冗余的重要性。通过优化搜索顺序,规定小木棍的递增放置,利用长度相等小木棍的等效性,以及空大木棍的等效性,实现了更高效的搜索策略。此外,文章还讨论了一种贪心思想的应用,当一个木棒用一个小木棍刚好填满时,如果后续分支失败,可以直接返回,避免无效搜索。
摘要由CSDN通过智能技术生成

知识点:深搜,剪枝

首先我们知道剪枝一共有5大类,除了记忆化,这个一般是学动态规划的时候学的,剩余4个是,优化搜索顺序,排除等效冗余,最优化剪枝,可行性剪枝,本题主要是练习排除等效冗余,这个方面的剪枝是比较经典的

1 首先是优化搜索顺序,先搜大的再搜小的,有一种说法是小的容易见缝插针,大的则不行,我自己的感觉是大的挤占的空间更大,剩余的空间小那么选择也少,总之不管那种说法,感觉上,是先搜大的再搜小的更好,一般优化搜索顺序这块儿都是从大往小搜,也有可能是我做题少还没有遇见别的情况

2 人为规定,一个大木棒里面放的小木棍的编号是递增的,因为一个木棒里面放的两个相同的木棍顺序不同,此时属于一种情况,所以我们需要记录上一个放的木棍的编号在函数的参数里面

3 长度相等的小木棍具有等效性,也就是我们正在填某个木棒,如果当前的小木棍的分支不满足情况,那么后面长度相同的小木棍的分支同样是不满足的,就不要进入

4 空的大木棒具有等效性,这里的等效性指的是失败时候具有等效性,也就是我们往一个空的木棒里面放了一个小木棍,下面的分支是失败的,那么后面空的木棒也都不会搜索成功,这里就直接不需要搜后面的木棒了,直接返回

5 这个是最难的,说是用了贪心的思想,也就是如果一个木棒拼上一个木棍之后长度正好满足,继续向下搜下一个木棒,下面的分支搜索失败了,那么这里就直接返回,因为用一个木棍拼好,下面的分支都要失败,再往后想要拼好这个空缺,那么注定需要多个小木棍,那么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值