NO.71十六届蓝桥杯备战|搜索算法-递归型枚举与回溯剪枝|枚举子集|组合型枚举|枚举排列|全排列问题(C++)

  1. 什么是搜索?
    搜索,是⼀种枚举,通过穷举所有的情况来找到最优解,或者统计合法解的个数。因此,搜索有时候也叫作暴搜。
    搜索⼀般分为深度优先搜索(DFS)与宽度优先搜索(BFS)。
  2. 深度优先遍历vs深度优先搜索,宽度优先遍历vs宽度优先搜索
    遍历是形式,搜索是⽬的。
    不过,在⼀般情况下,我们不会去纠结概念的差异,两者可以等同。
  3. 回溯与剪枝
  • 回溯:当在搜索的过程中,遇到⾛不通或者⾛到底的情况时,就回头。
  • 剪枝:剪掉在搜索过程中,剪掉重复出现或者不是最优解的分⽀
    搜索的本质:对决策树来一次遍历,直到把所有的情况全部收集到
递归型枚举与回溯剪枝初识
  1. 画决策树;
  2. 根据决策树写递归
B3622 枚举子集(递归实现指数型枚举) - 洛谷

设⼀共有3个数,分别是1,2,3。「从前往后」考虑每⼀个数,针对当前这个数「选」或者「不选」
![[Pasted image 20250406205715.png]]

设计递归函数:

  • 重复⼦问题:针对某⼀位,「选」或者「不选」这个数。因为最终结果要按照「字典序」输出,我们可以「先考虑不选」,然后「再考虑选」;
  • 实现⽅式参考代码和注释,结合「决策树」⼀起看会很清晰
#include <bits/stdc++.h>
using nam
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值