#include <stdio.h> //Dfs深度优先搜索 注意搜索深度t
#include <string.h>
char D[20][20];
int t,n,m;
int road(int i,int o,int timet)
{
int time[4]={0},j;
if (D[i][o]=='E')
return 1;
if (timet==0)
return 100;
D[i][o]='#';
if (o<m-1&&D[i][o+1]!='#')
time[0]=road(i,o+1,timet-1)+1;
else
time[0]=100;
if (o>0&&D[i][o-1]!='#')
time[1]=road(i,o-1,timet-1)+1;
else
time[1]=100;
if (i>0&&D[i-1][o]!='#')
time[2]=road(i-1,o,timet-1)+1;
else
time[2]=100;
if (i<n-1&&D[i+1][o]!='#')
time[3]=road(i+1,o,timet-1)+1;
else
time[3]=100;
D[i][o]='.';
for (j=1;j<4;j++)
if (time[0]>time[j])
time[0]=time[j];
return time[0];
}
int main()
{
int i,o,k,l,time;
while (scanf("%d%d%d",&n,&m,&t)!=EOF&&n&&m)
{
getchar();
for (i=0;i<n;i++)
{
gets(D[i]);
for (o=0;o<m;o++)
{
if (D[i][o]=='S')
{
k=i;
l=o;
}
}
}
time=road(k,l,t-1);
if (time<=1||time>t)
printf("Tragedy!!!\n");
else
printf("Oh Yes!!!\n");
}
return 0;
}描述
悲剧的雅典娜又被坏蛋抓走了!于是乎,正在马尔代夫度假的青铜五小强又要加班了-_-!
这次雅典娜被抓到了一个迷宫中,这个迷宫是方形的,且只有一层,由n*m个完全一样的正方形房间组成。
青铜五小强来到了房间S,也就是他们的起始点,雅典娜被关在房间E。而其他的房间,有些无法进入。小强们只能向前后左右四个方向行进,他们每到达一个新的房间就会消耗1个单位的时间。
已知雅典娜只能坚持t个单位的时间,时间一过立马挂掉,现在给你迷宫的布局、青铜五小强的起始位置S、雅典娜被关的位置E,请你判断小强们是否能够在雅典娜挂掉之前找到她。
注意:我们规定小强们到达起始位置时已经消耗了1个单位的时间了。
输入
输入包含多组测试数据。 每组输入的第一行为3个整数n,m,t(0<=n,m<=10,1<=t<=20),t表示雅典娜能够坚持的时间,n和m不会同时为1,当n和m中有一个为0或都为0时,输入结束。
接下来n行,每行输入m个字符,每个字符表示一个房间的情况:
‘.’:表示此房间可以通过。
‘#’:表示此房间不可以通过,需要绕道。
‘S’:表示青铜五小强的其实位置。
‘E’:表示雅典娜被关的位置。
题目保证每组输入有且仅有一个S和E。
输出
对于每组输入,如果能够在雅典娜挂掉之前找到她,输出“Oh Yes!!!”,否则输出“Tragedy!!!”。
样例输入1
4 4 10
....
....
....
S##E
3 4 20
.#E.
.S#.
.#..
3 0 5
样例输出1
Oh Yes!!!
Tragedy!!!
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复