1256:献给阿尔吉侬的花束
时间限制: 1000 ms         内存限制: 65536 KB
【题目描述】
阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。
迷宫用一个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

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int map[202][202],p[200000][4];
int xx[4]={-1,1,0,0};
int yy[4]={0,0,-1,1};
int t,r,c,x1,y1;
char ch;
void bfs(){int x,y,t=0,w=1;while(w>t){t++;for(int i=0;i<4;i++){x=p[t][1]+xx[i];y=p[t][2]+yy[i];if(x>0&&x<=r&&y>0&&y<=c&&map[x][y]==0){w++;p[w][1]=x;p[w][2]=y;p[w][3]=p[t][3]+1;map[x][y]=1;if(x==x1&&y==y1){printf("%d\n",p[w][3]);return;}} }}printf("oop!\n");
}
int main(int argc, char *argv[])
{scanf("%d",&t);for(int k=1;k<=t;k++){scanf("%d %d",&r,&c);memset(map,0,sizeof(map));memset(p,0,sizeof(p));for(int i=1;i<=r;i++)for(int j=1;j<=c;j++){cin>>ch;if(ch=='S'){map[i][j]=1;p[1][1]=i,p[1][2]=j,p[1][3]=0;}else if(ch=='E'){x1=i;y1=j;}else if(ch=='#')map[i][j]=1;}bfs();}return 0;
}

1256:献给阿尔吉侬的花束 2021-01-09相关推荐

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

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

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

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

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

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

  4. 【信息学奥赛一本通】1256:献给阿尔吉侬的花束

    传送门:献给阿尔吉侬的花束 我的哔哩哔哩账号 1256:献给阿尔吉侬的花束 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 1696     通过数: 685 [题 ...

  5. 2021寒假每日一题《献给阿尔吉侬的花束》

    献给阿尔吉侬的花束 题目来源:<信息学奥赛一本通> 时间限制: 1000 m s 1000ms 1000ms 内存限制: 64 m b 64mb 64mb 题目描述 阿尔吉侬是一只聪明又慵 ...

  6. 27、Acwing 2021/2/5 1101. 献给阿尔吉侬的花束

    27.Acwing 2021/2/5 1101. 献给阿尔吉侬的花束 献给阿尔吉侬的花束 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫. 今天它要挑战一个非常大的迷宫,研究员们为了 ...

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

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

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

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

  9. #009#献给阿尔吉侬的花束

    前言 日志,各位看官就当乐子看吧. 正经人谁写日记啊?!! --鹅城县长 不用想乱七八糟的,写就完事儿了.今天没背八股文.(确实是因为看不下去题,没成就感) VideosTV 地址:https://g ...

最新文章

  1. Christmas Present
  2. python列表每行查找字符串,python - 用python查找子字符串列表成字符串列表 - SO中文参考 - www.soinside.com...
  3. 自学编程成功概率有多少可能
  4. Google Guava EventBus和Java 7 WatchService用于事件编程
  5. solidworks模板_工程师实用高级操作,Solidworks自定义属性链接到工程图模板
  6. Java多线程(线程同步)
  7. 【Java】关于Java编程软件idea快捷键的使用
  8. Python isdigit() isalnum()
  9. thymeleaf点击onclick事件
  10. 22计算机408考研—数据结构—排序(详解加例题)
  11. Kali安装使用文泉驿字体
  12. BS7799, ISO/IEC 17799, ISO/IEC 27001容易混淆
  13. 1000+常用Python库一览
  14. vue-echarts教程
  15. 装什么软件测试笔记本耐用,我买了新电脑,用什么软件测试比较好?
  16. MIUI主题风格_一种Android系统换肤功能的设计
  17. html5 励志名言,励志名言五十条
  18. 2020年Web前端学习网站导航
  19. oracle静默创建实例linux,linux CentOS7下快速静默安装Oracle11GR2数据库并创建实例
  20. android 事件派发流程详解

热门文章

  1. 8. 查询表student——查全体学生的姓名及其出生年份
  2. PLC和单片机有什么区别?什么是单片机?PLC又是什么意思?
  3. 基于单片机的简易数字电压表设计(电路+程序)
  4. STAR-CCM+用户宏环境配置
  5. 数据库成绩管理系统Mysql_学生成绩管理系统数据库模板1.doc
  6. thinkphp漏洞集合
  7. 多边形分割成若干凸多边形(NavMesh的初步形成)
  8. javascript4 事件
  9. Launcher---图标预置
  10. 一篇很好的文章,学verilog的可以好好看看!(转载