【学习笔记】JU1-1B BFS
< 搜索 > BFS 广(宽)度优先搜索:
基本思想:在一棵决策树上,逐层搜索,先搜索离根节点近的,最后到最底层。
实现:这里使用队列完成,首先添加根节点(即初始状态),再逐个将决策树的原始根节点的各子节点从左往右加入队列;
每次大循环取出队头输出(或记录),并POP掉队头,直到队列空为止;

代码实现:
1 #include<queue>//加入C++STL标准库的queue容器 2 queue</*数据类型*/>q//队列名自取 3 q.push("初始状态")//加入初始状态 4 while(!q.empty)//判断非空 5 { 6 /*数据类型*/ fr=q.front(); 7 //对队头进行处理 8 q.pop(); 9 for("枚举所有可拓展情况") { 10 //可进行其他处理 11 if("符合情况") 12 q.push("这种情况");//加入队列 13 //并或进行其他处理 14 } 15 }
优点:短路性,即找到答案的过程就是最优(短)的过程。
缺点:代码较多,思考过程较繁琐。
适用于:求最优解中。

                
            
        
浙公网安备 33010602011771号