蓝桥杯备赛笔记(一) 深度优先搜索中的剪枝

本文介绍了深度优先搜索中的剪枝优化算法,包括可行性剪枝和最优化剪枝。通过分析小木棍问题,阐述如何运用剪枝策略减少搜索时间。例如,通过判断总长度是否能被原木棍数整除、木棍长度排序等方法进行可行性剪枝,以及在搜索过程中设置上下界进行最优化剪枝。文章还给出了相关代码参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

剪枝是一种优化算法,通过剪掉不合理的搜索来减少搜索时间。

剪枝通常分为以下两类:

  1. 可行性剪枝
  2. 最优化剪枝

可行性剪枝:该方法判断继续搜索能否得出答案,如果不能直接回溯。

最优化剪枝:又称为上下界剪枝,是一种重要的搜索剪枝策略。它记录当前得到的最优值,如果当前结点已经无法产生比当前最优解更优的解时,可以提前回溯。

例题(小木棍):

题目描述

乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50。

现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。

给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。

输入

输入文件共有二行。

第一行为一个单独的整数N表示砍过以后的小木棍的总数,其中N≤60。

第二行为N个用空个隔开的正整数,表示N根小木棍的长度。

输出

输出文件仅一行,表示要求的原始木棍的最小可能长度。

样例输入

9

5 2 1 5 2 1 5 2 1
样例输出

6

分析:

最优性剪枝:

1、设所有木棍的长度和是sum,如果原长度不能够被sum整除,那么不成立

2、木棍原来的长度一定大于等于所有木棍中最长的那根的长度

可行性剪枝:

3、短小的木棍可以更灵活,可以对输入的木根从大到小排序

4、当用木棍i拼合时,可以从第i+1后的木棍开始搜索,因为根据优化1,前面的木棍已经用过了

5、用当前最长的木棍开始搜索,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值