附BFS解题代码:

#include<iostream>
#include<queue>
using namespace std;char room[23][23];
int dir[4][2] =
{{-1,0},  //向左。左上角坐标是(0, 0){0,-1},  //向上{1,0},   //向右{0,1}    //向下
};
int Wx, Hy, num,num_times=0;                 //Wx行,Hy列。用num统计可走的位置有多少,num_times记录搜索次数
#define CHECK(x, y) (x<Wx && x>=0 && y >=0 && y<Hy) //是否在room里
struct node
{int x,y;
};//坐标点void BFS(int dx,int dy)
{num=1;                         //起点也包含在砖块内queue <node> q;                //队列中放坐标点(结构体)node start, next;              //缺省初始化一个起点和下一个点(结构体)start.x = dx;                  //给起点坐标赋值start.y = dy;q.push(start);                 //把赋值后的起点压入队列中while(!q.empty())  //如果队列不为空{start = q.front();//每一次都把队列头部作为起点,起点一直都在变化q.pop();//每一次都要把起点从头移除//cout<<"out"<<start.x<<start.y<<endl;    //打印出队列情况,进行验证for(int i=0; i<4; i++)   //按左、上、右、下,4个方向顺时针逐一搜索{next.x = start.x + dir[i][0];next.y = start.y + dir[i][1];if(CHECK(next.x,next.y) && room[next.x][next.y]=='.'){room[next.x][next.y]='#';//进队之后,标记为已经处理过,即已经走过的瓷砖下一次不能再走num++;q.push(next);//从尾插入for (int n = 0; n < Hy; n++)               //有Hy列{for (int m = 0; m < Wx; m++)           //一次读入一行{cout<<room[m][n];//把每次搜索完毕的瓷砖状态打印出来}cout<<endl;}num_times++;cout<<"第"<<num_times<<"次搜索完毕"<<endl;}}}
}int main()
{int x, y, dx, dy;while (cin >> Wx >> Hy){if (Wx==0 && Hy==0)break;for (y = 0; y < Hy; y++)               //有Hy列{for (x = 0; x < Wx; x++)              //一次读入一行{cin >> room[x][y];if(room[x][y] == '@')          //读入起点{dx = x;dy = y;}}}cout<<endl;num = 0;BFS(dx, dy);cout << num << endl;}return 0;
}

输入:

运行结果:

深度优先搜索(DFS)和广度优先搜索(BFS)探究相关推荐

  1. 数据结构与算法(7-2)图的遍历(深度优先遍历DFS、广度优先遍历BFS)(分别用邻接矩阵和邻接表实现)

    目录 深度优先遍历(DFS)和广度优先遍历(BFS)原理 1.自己的原理图 2.官方原理图 一.邻接矩阵的深度优先遍历(DFS) 1.原理图 2. 过程: 3.总代码 二.邻接表的深度优先遍历(DFS ...

  2. 一文搞定深度优先搜索(DFS)与广度优先搜索(BFS)【含完整源码】

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  3. 图的深度优先搜索(DFS)和广度优先搜索(BFS)算法

    深度优先(DFS) 深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接 ...

  4. 【蓝桥杯】2015决赛A组 5 穿越雷区(深度优先搜索dfs、广度优先搜索bfs)

    历届试题 穿越雷区 问题描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废. 某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征), ...

  5. 树的前序、中序、后序遍历及深度优先算法DFS、广度优先算法BFS及python实现

    刷Leetcode时遇到一种经典数据结构--树,树是典型递归思想来的,学习树有助于学习递归思想以及栈.队列(后续细说),本文对树的结构.遍历算法以及Python实现做总结,以供复习拓展 树是连通的无环 ...

  6. 【数据结构与算法】2.深度优先搜索DFS、广度优先搜索BFS

    原文链接:https://blog.csdn.net/qq_41681241/article/details/81432634 总结 一般来说,广搜常用于找单一的最短路线,或者是规模小的路径搜索,它的 ...

  7. 图的遍历(深度优先遍历DFS,广度优先遍历BFS)以及C语言的实现

    遍历的定义: 从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算. 一:深度优先遍历(DFS) 1,在访问图中某一起始顶点V后,由V ...

  8. 数据结构-图的深度优先遍历(DFS)和广度优先遍历(BFS)算法分析

    https://www.cnblogs.com/qzhc/p/10291430.html 最后一个广度优先有错误,H不指向E,只有G指向E,所以顺序应该是ABCFDHGE

  9. 深度优先搜索遍历与广度优先搜索遍历

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 深度优先 ...

最新文章

  1. 2022-2028年中国铁路信息化建设投资分析及前景预测报告
  2. 机器学习中的一些概念
  3. Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller — NAPI
  4. asp.net模版页面的高级应用
  5. Win8.1 查看 “Windows 体验指数“
  6. Android之解决NestedScrollView嵌套RecyclerView部分手机返回到这个页面Recyclerview顶部,而不是页面NestedScrollView顶部
  7. linux获取tomcat进程,Shell 获取Tomcat进程号
  8. [vue] vue的is这个特性你有用过吗?主要用在哪些方面?
  9. 农历php,PHP农历公历转换
  10. Spring2..5整合Ehacahe
  11. 工作流的节点关系详解
  12. 关于使用cadence建pad
  13. JBOSS 5.0.0GA的集群搭建
  14. 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。...
  15. RabbitMQ之Exchange Direct模式
  16. Parallel垃圾回收器总结
  17. windows下如何制作和应用数字签名证书 全流程
  18. 微单相机和单反相机的区别?摄影入门第一课
  19. PCAN-View如何保存报文?
  20. 如何用LaTeX写简历

热门文章

  1. 判断本地和云端通讯录是否一致
  2. Volley源码学习3--log类
  3. 哈夫曼编解码器C语言可运行
  4. html界面左侧没有顶格,求解,html页面顶部有空白??
  5. [******] 堆排序
  6. 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度
  7. [bzoj1700]: [Usaco2007 Jan]Problem Solving 解题
  8. typescript索引类型_复杂场景下的 typescript 类型锚定 (1) ----- 对象索引提取-阿里云开发者社区...
  9. irule jar包无法导入_poi表格的导入导出
  10. 记事本可以编辑html语言吗,笔记本win7系统使用记事本编辑和运行html代码的方法...