- 什么是搜索?
搜索,是⼀种枚举,通过穷举所有的情况来找到最优解,或者统计合法解的个数。因此,搜索有时候也叫作暴搜。
搜索⼀般分为深度优先搜索(DFS)与宽度优先搜索(BFS)。 - 深度优先遍历vs深度优先搜索,宽度优先遍历vs宽度优先搜索
遍历是形式,搜索是⽬的。
不过,在⼀般情况下,我们不会去纠结概念的差异,两者可以等同。 - 回溯与剪枝
- 回溯:当在搜索的过程中,遇到⾛不通或者⾛到底的情况时,就回头。
- 剪枝:剪掉在搜索过程中,剪掉重复出现或者不是最优解的分⽀
搜索的本质:对决策树来一次遍历,直到把所有的情况全部收集到
递归型枚举与回溯剪枝初识
- 画决策树;
- 根据决策树写递归
B3622 枚举子集(递归实现指数型枚举) - 洛谷
设⼀共有3个数,分别是1,2,3。「从前往后」考虑每⼀个数,针对当前这个数「选」或者「不选」
![![[Pasted image 20250406205715.png]]](https://i-blog.csdnimg.cn/direct/750fb6347b9e44168e2a8a4daacfa7d1.png)
设计递归函数:
- 重复⼦问题:针对某⼀位,「选」或者「不选」这个数。因为最终结果要按照「字典序」输出,我们可以「先考虑不选」,然后「再考虑选」;
- 实现⽅式参考代码和注释,结合「决策树」⼀起看会很清晰
#include <bits/stdc++.h>
using nam

最低0.47元/天 解锁文章
862

被折叠的 条评论
为什么被折叠?



