广度优先搜索算法(英语:Breadth-First Search,缩写为BFS),又译作宽度优先搜索,或横向优先搜索,是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。广度优先搜索的实现一般采用open-closed表。

BFS是一种暴力搜索算法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能地址,彻底地搜索整张图,直到找到结果为止。

广度优先算法的步骤

  1. 首先将根节点放入队列中。
  2. 从队列中取出第一个节点,并检验它是否为目标。如果找到目标,则结束搜索并回传结果。否则将它所有尚未检验过的直接子节点加入队列中。
  3. 若队列为空,表示整张图都检查过了——亦即图中没有欲搜索的目标。结束搜索并回传“找不到目标”。
  4. 重复步骤2。
#include <iostream>
#include <queue>
using namespace std;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int m[100][100],v[100][100];
struct road{int x;int y;int step;
};
queue<road> ma;
int main(){int a,b;cin >> a >> b;int nu;for(int i=1;i<=a;i++) for(int j=1;j<=b;j++) {cin >> nu;m[i][j]=nu+1;}int startx,starty,endx,endy;cin >> startx >> starty >> endx >> endy;road start;start.x=startx;start.y=starty;start.step=0;ma.push(start);v[startx][starty]=1;bool flag=0;while(!ma.empty()){road next;start=ma.front();if(start.x==endx&&start.y==endy){cout << start.step << endl;flag=1;break;}for(int k=0;k<4;k++){next.x=start.x+dx[k];next.y=start.y+dy[k];next.step=start.step+1;if(m[next.x][next.y]==1&&v[next.x][next.y]==0){printf("I got %d %dn",next.x,next.y);ma.push(next);v[next.x][next.y]=1;}}ma.pop();}if(flag==0) cout << "Not Found" << endl;return 0;
}

博客原贴:

C++ 广度优先搜索 | Adament Cabin - Adament Cabinhttps://www.adament.xyz/c-%e5%b9%bf%e5%ba%a6%e4%bc%98%e5%85%88%e6%90%9c%e7%b4%a2/

C++ 广度优先算法相关推荐

  1. python爬虫算法深度优先_爬虫课程(四)|深度优先和广度优先算法

    深度优先和广度优先算法在爬取一个整站上经常用到,本课程主要讲解这两个算法的原理以及使用过程. 一.网站的树结构 1.1.一个网站的url结构图 以知乎为例,知乎目前有发现.话题.Live.书店.圆桌. ...

  2. 浅谈网络爬虫中广度优先算法和代码实现

    前几天给大家分享了网络爬虫中深度优先算法的介绍及其代码实现过程,没来得及上车的小伙伴们可以戳这篇文章--浅谈网络爬虫中深度优先算法和简单代码实现.今天小编给大家分享网络爬虫中广度优先算法的介绍及其代码 ...

  3. 图的深度优先和广度优先算法(DFS递归与非递归)

    无向图--邻接矩阵的深度优先和广度优先算法实现 测试环境:VS2008(C) [cpp:showcolumns] view plaincopyprint? ·········10········20· ...

  4. 树与二叉树的深度优先与广度优先算法(递归与非递归)

    本博客前面文章已对树与二叉树有过简单的介绍,本文主要是重点介绍有关二叉树的一些具体操作与应用 阅读本文前,可以先参考本博客 各种基本算法实现小结(三)-- 树与二叉树   和  各种基本算法实现小结( ...

  5. (造轮子)C 创建队列和图实现广度优先算法(BFS)和深度优先算法(DFS)(数据结构)

    链表.队列和图实现BFS和DFS算法(C+造轮子+详细代码注释) 1.队列的链式存储结构   队列的链式表示称为链队列,它实际上是一个同时带有队头指针和队尾指针的单链表.头指针指向队头节点,尾指针指向 ...

  6. BFS广度优先算法, DFS深度优先算法,Python,队列实现,栈实现

    来源:https://www.bilibili.com/video/BV1Ks411575U/?spm_id_from=333.788.videocard.0 BFS广度优先算法 graph = {& ...

  7. 刷题 BFS 广度优先算法 : 大胖子走迷宫 (python, java)

    刷题 BFS 广度优先算法 : 大胖子走迷宫 (python, java) https://www.lanqiao.cn/problems/234/learning/ http://lx.lanqia ...

  8. 猎人抓兔子 - (广度优先算法)

    题目描述: 假设有一只兔子,有4个排成一排的洞,编号为1和4.兔子每天晚上跳到相邻的一个洞里住,2号洞可以跳1号和3号洞,4号洞只能跳3号洞.而猎人每天白天检查其中的一个洞.猎人告诉你每天检查的洞的编 ...

  9. 广度优先算法之狄克斯特拉算法

    广度优先算法之狄克斯特拉算法 package cn.wizzer.common.util; import java.util.ArrayList; import java.util.HashMap; ...

  10. c语言bfs算法走迷宫,使用广度优先算法(BFS)走迷宫

    前面介绍广度优先算法的时候提及了多次走迷宫,我们就真正的走一次迷宫试试! 要求如下: 输入给出迷宫矩阵的行数和列数,并给出迷宫(使用点 (.) 表示路,使用星 (*) 表示障碍物,使用S表示起点,T表 ...

最新文章

  1. Javaweb环境配置,使用2014MyEclipse全过程详解!搭建JDK环境,Tomcat环境!破解2014MyEclipse。
  2. “三巨头”联合发布万字长文,深度学习将通往何方?
  3. python项目部署到docker_使用docker 部署python 项目
  4. 渲染状态的管理 (转)
  5. java returnaddress,JVM之数据类型
  6. Android代码混淆方法,Android 代码混淆零基础入门
  7. mysql 相关搜索_MySQL单词搜索相关度排名
  8. VB讲课笔记04:数据类型、运算符与表达式、常用函数
  9. ig 焊接机器人_发那科机器人焊接应用的IO配置(总线型)
  10. 初中信息技术认识计算机,初中信息技术 认识计算机
  11. iOS原生的AVFoundation扫描二维码/条形码
  12. 触摸屏驱动开发——转载
  13. 说明书丨Abnova EDA(人)重组蛋白
  14. 团购网站出路 艰难转型
  15. 如何在Windows中将“显示桌面”图标移动到快速启动栏或任务栏
  16. VC中窗口在屏幕中央显示
  17. 【简单】Divisor Summation
  18. Android 7.0 ----- Direct Boot模式(AppClock)
  19. DbVisualizer破解
  20. 【华为OD机试真题 JAVA】热点网站统计

热门文章

  1. 基于Vue的兴趣活动推荐APP的设计与实现_kaic
  2. (充电器电池)双电源自动切换电路
  3. 医院挂号预约管理系统 计算机毕设源码69733
  4. java filesaver获取文件名_FileSaver
  5. 预制发票付款到期日取值
  6. 说说程序员的核心能力:第一个三年:后台、前端、移动应用,第二个三年呢?
  7. java 节气_谁有关于24节气的算法,最后有java实现的代码
  8. “粪便银行”:救人拿钱两不误 A Poop Bank in Massachusetts Will Pay You $40 Every Day
  9. 简单开发调用百度翻译api(java)
  10. Rockchip RK3588如何创建新一个新板级DTS