bfs广搜
什么是广搜?
- 百度百科:个人觉得解释地并不好
- 个人理解:跟dfs一样暴力穷举每种状态,只不过不是“一搜到底”,而是一层一层的搜索
它有什么好处?
- 容易理解
- 骗分利器
- 好写
它有什么弊端?
- 慢。毕竟是穷举每一种状态
如何实现?
- 算法流程图如下:
#include <iostream>
#include <cstdio>
#include <queue>
void bfs()
{
初始化tmp,并压入队列;
while(队列不为空)
{
取出队首元素放入now中,弹出队首元素;
for(int i=1;i<=算符种数;i++)
{
在now基础上修改tmp;
if(tmp满足到达目的地的条件)
{
输出解;
return;
}
if(tmp满足入队的条件)
{
将tmp压入队列;
标记tmp已访问;
}
}
}
}
int main()
{
bfs();
return 0;
}
补充
- bfs写法有两种:手写和STL(通常选择STL)
- 那么用STL中的queue就有一些函数使用,这些函数的说明书请参见“queue”(路径如下)
- 我的博客 -> STL -> queue
原文地址:https://www.cnblogs.com/BigYellowDog/p/9736113.html
时间: 2024-11-13 06:34:39