码迷,mamicode.com
首页 > 其他好文 > 详细

bfs广搜

时间:2018-10-02 00:21:03      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:oid   clu   队列   return   手写   不为   说明   百度百科   class   

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广搜

标签:oid   clu   队列   return   手写   不为   说明   百度百科   class   

原文地址:https://www.cnblogs.com/BigYellowDog/p/9736113.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!