EVERYTHING HAPPENS FOR THE BES|

wnsyou

园龄:2年4个月粉丝:19关注:16

2023-10-08 05:12阅读: 13评论: 0推荐: 0

基础搜索

dfs

深度优先搜索,全称 Depth First Search,通常有两种意义:递归暴力枚举每种情况、图论中用于遍历或搜索图的算法。

搜索:递归暴力枚举每种情况

OI-wiki Link

没有什么好说的,经常用于打暴力,像 xhr 神仙就可以用它打出 HN 2023 小学组 S 1=

洛谷 P2089 烤鸡

给定一个整数 n,你现在要确定 10 个变量 x1,x2x10 的值,满足 1i10xi=n 且对于每个 1i101xi3,输出方案数和每种方案。

要枚举 10 个变量的值,你当然可以写 10 重循环枚举,可如果他要求你枚举 m 个变量的值呢?这时,你就需要用递归来处理。

对于每层递归,枚举每种情况,然后进入下一层递归。当递归枚举完每个数的情况后,判断情况是否满足要求,然后返回上一层递归。

#include <bits/stdc++.h>
using namespace std;
int n, a[15], ans;
vector<vector<int>> v;
void dfs (int x) {
if (x == 11) {
vector<int> t;
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += a[i], t.push_back(a[i]);
}
if (sum == n) {
ans++, v.push_back(t);
}
return ;
}
a[x] = 1, dfs(x + 1);
a[x] = 2, dfs(x + 1);
a[x] = 3, dfs(x + 1);
}
int main () {
ios::sync_with_stdio(0), cin.tie(0);
cin >> n;
dfs(1);
cout << ans << '\n';
for (auto i : v) {
for (int j : i) {
cout << j << ' ';
}
cout << '\n';
}
return 0;
}

图论:用于遍历或搜索图的算法

OI-wiki Link

没啥好说的。

bfs

OI-wiki Link

广度优先搜索,没啥好说的。

双向广搜

顾名思义,就是从起点和终点同时开始进行广搜,当两边都找到同一点时直接更新。

剪枝

剪枝,用于优化搜索的效率。

最优性剪枝

如果当前状态无论如何也不可能对答案造成影响,直接 return ; 即可。

可行性剪枝

若当前状态已经不符合要求,直接 return ; 即可。

本文作者:wnsyou の blog

本文链接:https://www.cnblogs.com/wnsyou-blog/p/common_search.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wnsyou  阅读(13)  评论(0编辑  收藏  举报
  1. 1 勝利への道 安藤浩和
  2. 2 Minecraft’s End Eric Fullerton
  3. 3 月光曲完整版 贝多芬 云熙音乐
  4. 4 平凡之路 (Live版) 朴树
  5. 5 Minecraft C418
  6. 6 Paradise NiziU
  7. 7 叫我,灰原哀 龙大人不喷火
  8. 8 心机之蛙,一直摸你肚子 ——《名侦探柯南》原创同人曲 炊饭,叶辞樱,温海,寒砧,南柯柯,小茜玛姬,盛姝,阿崔Ac,贝壳初,千湛,兮茶子DaYu,乔慕,黎鹿北,起千温卿,遮阳伞,曲悠
  9. 9 战 歌 此去经年
勝利への道 - 安藤浩和
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

暂无歌词

加载中…

{{tag.name}}

{{tran.text}}{{tran.sub}}
无对应文字
有可能是
{{input}}
尚未录入,我来提交对应文字
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示