天神小学
来源:互联网 发布:欧莱雅淘宝旗舰店假货 编辑:程序博客网 时间:2024/04/20 15:57
可以把天神小学看作是一个二维的迷宫,每一秒都只能从当前位置走到上下左右四个相邻的格子里,因为天小一直在崩溃,所以有很多点是无法行走的。问班长能不能在天小完全崩溃,即t秒内逃出天神小学。
第一行一个整数T,表示数据组数
每组数据第一行输入3个整数n,m,t分别表示迷宫的行数,列数,以及距离天小崩溃剩余的时间。(3≤n,m≤20,t≤100)
接下来输入n行,每行有一个长度为m的字符串。
其中字符’.’表示可以通行
字符’*’表示无法通行
字符’O’表示出口
字符’X’表示班长的起始位置
若能逃离 输出 "happy end"
否则输出"bad end"2
5 5 13
.....
.***.
.*X*O
.*.*.
...*.
5 5 14
.....
.***.
.*X*O
.*.*.
...*.
输出
bad end
happy end
宽度优先搜索。。。,用队列实现的方式
#include <cstdio>#include <queue>using namespace std;int t;int n;int m;//n为行,m为列,t为时间int bfs(int x,int y);char s[21][21];typedef struct tianshen{ int c,d;//需要保存原来的节点的坐标 int step;//相对应的步数}tianshen;int main() { int T,i,j,ans; scanf("%d",&T); while (T--) { scanf("%d%d%d",&n,&m,&t); for (i=0;i<n;i++) scanf("%s",s[i]); for (i=0;i<n;i++) for (j=0;j<n;j++) if (s[i][j]=='X') ans=bfs(i,j); if (ans<=t) printf("happy end\n"); else printf("bad end\n"); } return 0; } int bfs(int x,int y) { queue<tianshen>q; int i; tianshen t,node; int a[4]={-1,1,0,0};//控制方向 int b[4]={0,0,1,-1}; node.step=0;//起始步数为0 node.c=x;//起始设置 node.d=y; q.push(node); while (!q.empty()) { node=q.front();//记录上一个节点 q.pop(); for (i=0;i<=3;i++) { t=node;//node用来保存原根节点 t.c=t.c+a[i]; t.d=t.d+b[i]; t.step++; if (s[t.c][t.d]=='O') return t.step; if ((t.c<m)&&(t.c>=0)&&(t.d<n)&&(t.d>=0)&&(s[t.c][t.d]=='.')) { s[t.c][t.d]='*'; q.push(t);//将符合条件的下一个子节点入队(其实与深搜的差别就是深搜立刻开始进入递归,而宽搜是先保存下来,等之前的结束了才轮到子节点) } } } return 10000; }
0 0
- 天神小学
- NOJ 2076 天神小学
- 南邮 OJ 2076 天神小学
- NOJ 网络赛 D题 天神小学
- NOJ-2076-天神小学-典型BFS题型
- 别天神
- 天神下凡
- 操作系统“天神”David Cutler
- 问题 D: 天神下凡
- (转:)操作系统“天神”David Cutler
- 小学UML
- 小学三年
- 疯子:小学
- 小学体检
- 小学造句
- 小学奥赛题
- 小学,大学。。。
- 流 小学。
- 苏州信用卡套现18626261917
- 铝木型材窗说明4
- Linux下查看文件和文件夹大小
- C#入口程序解读
- 今天软件工作室
- 天神小学
- SqlParameter的用法
- 详解coredump
- TCP、IP、HTTP、SOCKET之间的区别和联系
- 在使用eclipse开发android过程中,注释的使用细节
- 提高篇第2-5课第四题
- ADS中自定义verilogA模型添加方法
- shmmax
- Android jp2(jpeg2000)图片的解码显示