【题目描述】

阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。

迷宫用一个R×C的字符矩阵来表示。字符S表示阿尔吉侬所在的位置,字符E表示奶酪所在的位置,字符#表示墙壁,字符.表示可以通行。阿尔吉侬在1个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图边界。

【输入】

第一行是一个正整数T(1 ≤ T ≤ 10),表示一共有T组数据。
每一组数据的第一行包含了两个用空格分开的正整数R和C(2 ≤ R, C ≤ 200),表示地图是一个R×C的矩阵。
接下来的R行描述了地图的具体内容,每一行包含了C个字符。字符含义如题目描述中所述。保证有且仅有一个S和E。

【输出】

对于每一组数据,输出阿尔吉侬吃到奶酪的最少单位时间。若阿尔吉侬无法吃到奶酪,则输出“oop!”(只输出引号里面的内容,不输出引号)。每组数据的输出结果占一行。

【输入样例】

3
3 4
.S..
###.
..E.
3 4
.S..
.E..
....
3 4
.S..
####
..E.

【输出样例】

5
1
oop!

为什么打字题这么多

这又是一道打字题,这次我就连注释也不写了
直接上代码:

#include <bits/stdc++.h>
using namespace std;
int n,m,p[1000008],q[1000008],ans[208][208],qx,qy,zx,zy,nn;
char a[208][208];
int xx[5]= {0,1,-1,0,0};
int yy[5]= {0,0,0,1,-1};
void bfs() {a[qx][qy]='#';ans[qx][qy]=0;int head=1;int tail=1;p[1]=qx;q[1]=qy;while(head<=tail) {for(int i=1; i<=4; i++) {int h=p[head]+xx[i];int l=q[head]+yy[i];if(a[h][l]!='#'&&h>=1&&l>=1&&h<=n&&l<=m) {a[h][l]='#';tail++;p[tail]=h;q[tail]=l;ans[h][l]=ans[p[head]][q[head]]+1;if(h==zx&&l==zy) {cout<<ans[h][l]<<endl;return ;}}}head++;}cout<<"oop!"<<endl;
}
int main() {cin>>nn;for(int lim=1; lim<=nn; lim++) {cin>>n>>m;for(int i=1; i<=n; i++) {for(int j=1; j<=m; j++) {cin>>a[i][j];if(a[i][j]=='S') {qx=i;qy=j;}if(a[i][j]=='E') {zx=i;zy=j;}}}bfs();}return 0;
}

【BFS】献给阿尔吉侬的花束(C++)相关推荐

  1. AcWing 1101. 献给阿尔吉侬的花束【BFS】

    题目链接:AcWing 1101. 献给阿尔吉侬的花束 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫. 今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点 ...

  2. 【蓝桥杯练习--BFS】1101. 献给阿尔吉侬的花束

    1101. 献给阿尔吉侬的花束 ps:你敢信,这长长的代码就是大佬口中很简单地.非常惬意地写出来的,我也想拥有这种惬意呜呜呜呜 大佬说这种题是有规律的 我要开始找了 本题中的状态就是每个单独的格子 思 ...

  3. 【BFS】献给阿尔吉侬的花束、噩梦

    一. 献给阿尔吉侬的花束 #include<iostream> #include<cstring> #include<queue> using namespace ...

  4. Acwing 红与黑 献给阿尔吉侬的花束(bfs与dfs新技巧)

    思路 首先将图中所有的点,都声明为题目的"不可到底"的点,这样在bfs或者dfs判断条件时候,判断走过的点,越界和不可走的点三者就可以合为一个条件,极大了减少了判断的复杂性 Acw ...

  5. 信息学奥赛一本通(1256:献给阿尔吉侬的花束)

    1256:献给阿尔吉侬的花束 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 7427     通过数: 3067 [题目描述] 阿尔吉侬是一只聪明又慵懒的小白鼠, ...

  6. 1256:献给阿尔吉侬的花束

    1256:献给阿尔吉侬的花束 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 9651     通过数: 4023 [题目描述] 阿尔吉侬是一只聪明又慵懒的小白鼠, ...

  7. 信息学奥赛一本通 1256:献给阿尔吉侬的花束 | OpenJudge NOI 2.5 7218:献给阿尔吉侬的花束

    [题目链接] ybt 1256:献给阿尔吉侬的花束 OpenJudge NOI 2.5 7218:献给阿尔吉侬的花束 [题目考点] 1. 广搜 迷宫问题 [解题思路] 广搜,迷宫问题模板题. 设结构体 ...

  8. 1101. 献给阿尔吉侬的花束

    1101. 献给阿尔吉侬的花束 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫. 今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的 ...

  9. BFS-Acwing-1101. 献给阿尔吉侬的花束

    BFS-Acwing-1101. 献给阿尔吉侬的花束 题目: 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫. 今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就 ...

  10. AcWing 1101. 献给阿尔吉侬的花束

    AcWing 1101. 献给阿尔吉侬的花束 题目链接 题目描述 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫. 今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点 ...

最新文章

  1. Java基础。public,private,static变量!以及一个实例化的小例子 以及方法
  2. ini配置文件的读取
  3. css动画Demo---水波动画和边框动画
  4. 大学期间可以获得哪些荣誉_大学期间没有什么荣誉经历,该怎么写简历呢?找工作会很难吗?...
  5. php 我已阅读并同意 判断,phb.php
  6. C++#define的用法(含特殊)
  7. java 压缩文件夹_java 实现压缩文件(单文件 或 文件夹)
  8. 【数据结构与算法】判断单链表是否有环的算法
  9. CS224N刷题——Assignment3.1_A window into NER
  10. java数字代码_Java基础08—数字类处理(示例代码)
  11. 输入法应提供不同工作下的字词频率模式
  12. 炸群java脚本,跪求微信炸群代码_跪求以下java程序的源代码
  13. linux 内核态 抓屏代码,Android screencap截屏指令
  14. Unity实现多语言切换
  15. 而立之年,学习编程,
  16. 音乐计算机在哪里买,[计算器自带音乐在哪里]语音计算器上的音乐有什
  17. php退款系统设计思路,关于退款的10篇文章推荐
  18. 基于C+++Mysql实现(WinForm)校友管理系统(面向对象)【100010007】
  19. TCP通信多发多收,和接收多个客户端消息
  20. HDU2209+POJ3279 枚举+dfs

热门文章

  1. 化简计算机,计算机辅助卡诺图的快速化简
  2. 曲线运动与万有引力公式_2019年全国各地物理高考分类汇编(5)曲线运动与万有引力定律...
  3. 为什么领导不喜欢提拔老实人?
  4. go语言01SDK、GoLand开发工具下载和安装
  5. Resolume Arena 6 Mac中文破解版永久激活方法
  6. 系统启动和内核管理 加密和安全
  7. 全球与中国三轴磁力计市场深度研究分析报告
  8. ubuntu怎么清理软件包_清理Ubuntu系统中的无用软件包
  9. 怎样实现ABBYY FineReader for Mac的快速安装
  10. abap MODIFY常用语法解析