bfs广搜

Posted bigyellowdog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bfs广搜相关的知识,希望对你有一定的参考价值。

bfs广搜

什么是广搜?

  • 百度百科:个人觉得解释地并不好
  • 个人理解:跟dfs一样暴力穷举每种状态,只不过不是“一搜到底”,而是一层一层的搜索

它有什么好处?

  1. 容易理解
  2. 骗分利器
  3. 好写

它有什么弊端?

  • 慢。毕竟是穷举每一种状态

如何实现?

  • 算法流程图如下:
#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

以上是关于bfs广搜的主要内容,如果未能解决你的问题,请参考以下文章

BFS 广搜

BFS广搜例题,问题引入 --- 阿狗荒岛逃生系列(其一)

bfs广搜

广搜 BFS()

Catch That Cow (BFS广搜)

广搜:codevs-3344(初步bfs)