#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语言代码)浏览:1474 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:484 |
printf基础练习2 (C语言代码)浏览:826 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:626 |
C语言训练-计算t=1+1/2+1/3+...+1/n (C语言代码)浏览:942 |
校门外的树 (C语言代码)浏览:733 |
关于float,double变量的几点说明浏览:1926 |
数组输出 (C语言代码)浏览:749 |
链表数据求和操作 (C语言代码)浏览:1035 |
第三届阿里中间件性能挑战赛-总决赛亚军比赛攻略浏览:1170 |