1256:献给阿尔吉侬的花束 2021-01-09

简介: 1256:献给阿尔吉侬的花束 2021-01-09

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

1. #include <iostream>
2. #include <cstdio>
3. #include <cstring>
4. #include <algorithm>
5. using namespace std;
6. int map[202][202],p[200000][4];
7. int xx[4]={-1,1,0,0};
8. int yy[4]={0,0,-1,1};
9. int t,r,c,x1,y1;
10. char ch;
11. void bfs(){
12.   int x,y,t=0,w=1;
13.   while(w>t){
14.     t++;
15.     for(int i=0;i<4;i++){
16.       x=p[t][1]+xx[i];
17.       y=p[t][2]+yy[i];
18.       if(x>0&&x<=r&&y>0&&y<=c&&map[x][y]==0){
19.         w++;p[w][1]=x;p[w][2]=y;
20.         p[w][3]=p[t][3]+1;map[x][y]=1;
21.         if(x==x1&&y==y1){
22.           printf("%d\n",p[w][3]);return;
23.         }
24.       } 
25.     }
26.   }
27.   printf("oop!\n");
28. }
29. int main(int argc, char *argv[])
30. {
31.   scanf("%d",&t);
32.   for(int k=1;k<=t;k++){
33.     scanf("%d %d",&r,&c);
34.     memset(map,0,sizeof(map));
35.     memset(p,0,sizeof(p));
36.     for(int i=1;i<=r;i++)
37.       for(int j=1;j<=c;j++){
38.         cin>>ch;
39.         if(ch=='S'){
40.           map[i][j]=1;p[1][1]=i,p[1][2]=j,p[1][3]=0;
41.         }
42.         else if(ch=='E'){x1=i;y1=j;}
43.         else if(ch=='#')map[i][j]=1;
44.     }
45.     bfs();
46.   }
47.   return 0;
48. }


相关文章
|
4月前
|
机器学习/深度学习 存储 算法
献给阿尔吉侬的花束
献给阿尔吉侬的花束
29 0
|
程序员
七夕来袭——属于程序员的浪漫
七夕来袭——属于程序员的浪漫
七夕来袭——属于程序员的浪漫
|
移动开发 小程序 程序员
这一年,熬过许多夜,也有些许收获 | 2022年终总结
弹指一挥间,时间如白驹过隙。光阴似箭,如月如梭,时间如闪电,转瞬即逝。一说到年终总结,好像都离不开这样煽情的开场白。但不可否认的是,时间确实过得很快,一晃一年又没了。
127 0
这一年,熬过许多夜,也有些许收获 | 2022年终总结
|
API 定位技术 C++
【致敬童年】Funcode实现坦克大战
【致敬童年】Funcode实现坦克大战
|
设计模式 算法 物联网
2021年终总结
2021年终总结
123 0
|
数据采集 前端开发 BI
任时光匆匆流去 | 2019 年终总结
2019 是正式参加工作的第二年,时间消失起来就像火药引线被点燃一般让人来不及反应。看到一句很有认同感的话:“写作是和自己对话,对话越多,内心就会越平和越坚定。”去年的写作荒废了不少,就趁年终总结,多想一点,多说一点。
128 0
技术宅带队年度心得
这一年来,带领了技术团队出差各地区奋战,也组建了公司内部创业团队,我现在能深刻体会到这八个字:战战兢兢,如履薄冰。
147 0
技术宅带队年度心得
一碗鸡汤
一、要成为自己的专家 1、找到自己的独特性——《发现自己的优势2.0》 2、弄清楚让我们做出决定的根本原因(是为了亲人、朋友还是为了成就感) 3、经验(定期反省自己什么做对了,什么做错了,有没有更对的经验可循)   人做不成事有两个原因:第一,他对自己说他不行;第二,别人说他不行。
862 0
|
移动开发 JavaScript 前端开发

热门文章

最新文章