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. }


相关文章
|
7月前
|
机器学习/深度学习 存储 算法
献给阿尔吉侬的花束
献给阿尔吉侬的花束
73 0
|
机器学习/深度学习
学霸、学神OR开挂
我们学习知识 好比武侠世界里的人修炼武功一般 有人天赋异禀、骨骼清奇 是天生的练武奇才——学神 有人天资平庸,但通过后天的孜孜不倦 终成一代大侠——学霸 还有人一路奇遇不断,屡获高人指点 成为绝世高手——外挂玩家
学霸、学神OR开挂
|
数据安全/隐私保护
|
开发框架 JavaScript 搜索推荐
|
人工智能 定位技术 JavaScript
7218:献给阿尔吉侬的花束
题目链接:http://noi.openjudge.cn/ch0205/7218/ 总时间限制: 100ms 内存限制: 65536kB 描述     阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。
1486 0
戒浮躁
很多时候,我们就是心浮气躁,遇到一些问题,初看起来看似很复杂,很难解决,但是,当我们能真的静下心来,沉下去,仔细分析,思考,那么很多问题,就不再是问题了。
698 0
苦逼但光荣的最后一棒
      四乘一百米是田径比赛中最精彩的一项赛事。四个选手组成一组,以最终一棒跑过终点为最终成绩;前三棒如果跑快了则最后一棒优势明显,反之最后一棒要努力追上前面落下的差距。
503 0
生活中的小感慨20160504
今天身体不适,还是简单写点东西。 不知道昨天是因为饮食的问题,还是劳累的问题,昨天睡觉以后就开始肚子痛,结果挨了2个小时,期间去了几次卫生间,最后还是上吐下泻,这样也好,肚子空了就没有什么值得翻腾的了。
882 0

热门文章

最新文章