洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入口、一些墙壁以及一个宝藏。由于迷宫是四连通的,即在迷宫中的一个位置,只能走到与它直接相邻的其他四个位置(上、下、左、右)。现洪尼玛在迷宫的入口处,问他最少需要走几步才能拿到宝藏?若永远无法拿到宝藏,则输出-1。

Input

多组测试数据。

每组数据输入第一行为正整数n,表示迷宫大小。

接下来n行,每行包括n个字符,其中字符'.'表示该位置为空地,字符'#'表示该位置为墙壁,字符'S'表示该位置为入口,字符'E'表示该位置为宝藏,输入数据中只有这四种字符,并且'S'和'E'仅出现一次。

n≤1000

Output

输出拿到宝藏最少需要走的步数,若永远无法拿到宝藏,则输出-1。

#include<bits/stdc++.h>
using namespace std;
int ex,ey;
int n;
int fx[4][2]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}};//走位方向数组
int bz[20][20];//标志遍历情况数组
char lk[20][20];//原始路况数组
struct node//用结构体保存当前的位置x.y和当前所用步数step
{int x;int y;int step;
};
int bfs(int c,int d)//广度优先搜索算法
{queue<node>q;node now,temp,pre;pre.x=c;pre.y=d;pre.step=0;q.push(pre); while(!q.empty()){now=q.front();q.pop();if(now.x==ex&&now.y==ey)//到达指定地点 {return 1;}for(int i=0;i<4;i++)//遍历四个可走的方向 {temp.x = now.x+fx[i][0];temp.y = now.y+fx[i][1];temp.step = now.step + 1;if(temp.x>=1&&temp.y>=1&&temp.x<=n&&temp.y<=n&&lk[temp.x][temp.y]!='#'&&bz[temp.x][temp.y]==0)//判断当前路段是否可走 {q.push(temp);bz[temp.x][temp.y]=1; //可走标志为1表示已经遍历过了 }}}return 0;
}int main()
{int t=0;cin>>t;while(t--){//int n=0;cin>>n;int a=0,b=0;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>lk[i][j];if(lk[i][j]=='s')//找起点 {a=i;b=j;}if(lk[i][j]=='e')//找终点 {ex=i;ey=j;}}}int flag=0;flag=bfs(a,b);if(flag==0){cout<<"NO"<<endl;}else {cout<<"YES"<<endl;}}return 0;} 

迷宫寻宝(BFS模板题)相关推荐

  1. HDU1269 迷宫城堡(模板题)

    HDU1269 迷宫城堡 文章目录 Problem Description 题解: Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N< ...

  2. 【蓝桥杯】九宫重排(bfs模板题)

    题目描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的局面记为:12 ...

  3. OJ:GPLT L3-008 喊山 BFS模板题

    喊山,一个山头呼喊的声音可以被临近的山头同时听到.题目假设每个山头最多有两个能听到它的临近山头.给定任意一个发出原始信号的山头,本题请你找出这个信号最远能传达到的地方. 输入格式: 输入第一行给出3个 ...

  4. 107. 二叉树的层序遍历 II and 102. 二叉树的层序遍历 023(BFS模板题打两道)

    一:题目 二:上码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* Tre ...

  5. 蓝桥 穿越雷区【第六届】【决赛】【C组】 BFS模板题 python

    想说的话 大家好

  6. 初识BFS POJ-3278 Catch That Cow FZU-2285 迷宫寻宝

    初识BFS POJ-3278 Catch That Cow FZU-2285 迷宫寻宝 令人窒息的创新实验课让我们写程序. POJ-3278 Catch That Cow Farmer John ha ...

  7. 福州大学第十五届程序设计竞赛_重现赛B题迷宫寻宝

    Problem B 迷宫寻宝 Accept: 52    Submit: 183 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem D ...

  8. nyoj82 迷宫寻宝(一) (bfs)

    迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号的门 ...

  9. c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)

    题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...

最新文章

  1. 1004 Counting Leaves (30 分)【难度: 中 / 知识点: 树的遍历】
  2. sqli-labs(十三)(hpp)
  3. Android开发工具之Android Studio--调用系统隐藏方法之操作aidl文件步骤
  4. when save is performed, registered callback will be called one by one
  5. 最新2019 蚂蚁金服4面(Java)面试题
  6. 论文浅尝 | WWW2022 - “知识提示”之知识约束预训练微调
  7. r语言折线图_R语言做多变量可视化分析?
  8. 一.对ThreadLocal的理解
  9. localhost 127.0.0.1 本机IP
  10. 算法初阶05:魔方矩阵
  11. 计算机网络管理员路由与交换深圳积多少分,2020年深圳积分入户,哪些加分的证书总结?...
  12. 2022跨年烟花代码
  13. 批量添加用户脚本--Linux bash
  14. 常用三角函数的无穷级数乘积公式推导详细过程与图形展示
  15. [SAM模板题] P3975 [TJOI2015] 弦论
  16. 成功解决:wandb.errors.UsageError: api_key not configured (no-tty). call wandb.login(key=[your_api_key])
  17. 比特未来:区块链技术的最大价值应用
  18. 软考笔记第五天之系统安全分析与设计
  19. 时隔一个月今日头条又宕机了 这个技术公司的“月经宕”有点频繁
  20. printf中用%d输出float或者double

热门文章

  1. 四旋翼飞行器2——自己设计四旋翼飞行器的硬件准备和基础知识
  2. Java程序编写 • 【第9章 程序:用定义类实现,吃货联盟订餐系统,新增商家和评论功能】
  3. Kaggle:Quora Question Pairs
  4. Lua中,泛型for循环遍历table时,ipairs和pairs的区别
  5. java 队列已满_JAVA中常见的阻塞队列详解
  6. jsplumb插件学习--单个节点添加多个锚点
  7. mysql免费自学课程,自学SQL网(教程 视频 练习全套)
  8. 基于vue3的Element-Plus问题汇总
  9. 全球最流行12款浏览器
  10. 有生之年转ta系列4pc手机图形api介绍