迷宫寻宝(BFS模板题)
洪尼玛今天准备去寻宝,在一个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模板题)相关推荐
- HDU1269 迷宫城堡(模板题)
HDU1269 迷宫城堡 文章目录 Problem Description 题解: Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N< ...
- 【蓝桥杯】九宫重排(bfs模板题)
题目描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的局面记为:12 ...
- OJ:GPLT L3-008 喊山 BFS模板题
喊山,一个山头呼喊的声音可以被临近的山头同时听到.题目假设每个山头最多有两个能听到它的临近山头.给定任意一个发出原始信号的山头,本题请你找出这个信号最远能传达到的地方. 输入格式: 输入第一行给出3个 ...
- 107. 二叉树的层序遍历 II and 102. 二叉树的层序遍历 023(BFS模板题打两道)
一:题目 二:上码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* Tre ...
- 蓝桥 穿越雷区【第六届】【决赛】【C组】 BFS模板题 python
想说的话 大家好
- 初识BFS POJ-3278 Catch That Cow FZU-2285 迷宫寻宝
初识BFS POJ-3278 Catch That Cow FZU-2285 迷宫寻宝 令人窒息的创新实验课让我们写程序. POJ-3278 Catch That Cow Farmer John ha ...
- 福州大学第十五届程序设计竞赛_重现赛B题迷宫寻宝
Problem B 迷宫寻宝 Accept: 52 Submit: 183 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem D ...
- nyoj82 迷宫寻宝(一) (bfs)
迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号的门 ...
- c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)
题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...
最新文章
- 1004 Counting Leaves (30 分)【难度: 中 / 知识点: 树的遍历】
- sqli-labs(十三)(hpp)
- Android开发工具之Android Studio--调用系统隐藏方法之操作aidl文件步骤
- when save is performed, registered callback will be called one by one
- 最新2019 蚂蚁金服4面(Java)面试题
- 论文浅尝 | WWW2022 - “知识提示”之知识约束预训练微调
- r语言折线图_R语言做多变量可视化分析?
- 一.对ThreadLocal的理解
- localhost 127.0.0.1 本机IP
- 算法初阶05:魔方矩阵
- 计算机网络管理员路由与交换深圳积多少分,2020年深圳积分入户,哪些加分的证书总结?...
- 2022跨年烟花代码
- 批量添加用户脚本--Linux bash
- 常用三角函数的无穷级数乘积公式推导详细过程与图形展示
- [SAM模板题] P3975 [TJOI2015] 弦论
- 成功解决:wandb.errors.UsageError: api_key not configured (no-tty). call wandb.login(key=[your_api_key])
- 比特未来:区块链技术的最大价值应用
- 软考笔记第五天之系统安全分析与设计
- 时隔一个月今日头条又宕机了 这个技术公司的“月经宕”有点频繁
- printf中用%d输出float或者double
热门文章
- 四旋翼飞行器2——自己设计四旋翼飞行器的硬件准备和基础知识
- Java程序编写 • 【第9章 程序:用定义类实现,吃货联盟订餐系统,新增商家和评论功能】
- Kaggle:Quora Question Pairs
- Lua中,泛型for循环遍历table时,ipairs和pairs的区别
- java 队列已满_JAVA中常见的阻塞队列详解
- jsplumb插件学习--单个节点添加多个锚点
- mysql免费自学课程,自学SQL网(教程 视频 练习全套)
- 基于vue3的Element-Plus问题汇总
- 全球最流行12款浏览器
- 有生之年转ta系列4pc手机图形api介绍