uva-532 - Dungeon Master
来源:互联网 发布:工业大数据平台架构 编辑:程序博客网 时间:2024/05/10 13:54
一开始用DFS怎么也没过,后来用了BFS终于国了,以后求最短路就用BFS;
#include<stdio.h>#include<string.h>struct list{ int l; int r; int c; int depth;}first,last,qun[30000],pan;int min;int map[50][50][50];int get(char c){ if(c=='.') return 1; if(c=='S') return 2; if(c=='E') return 3; return 0;}int bfs(int x,int y,int z){ int head,tail; int visit[50][50][50]; memset(visit,1,sizeof(visit)); head=0; tail=0; qun[0].l=x; qun[0].r=y; qun[0].c=z; qun[0].depth=1; tail++; visit[x][y][z]=0; while(tail>head) { pan=qun[head]; head++; if(pan.l==last.l&&pan.r==last.r&&pan.c==last.c) { min=pan.depth; return 1; } if(map[pan.l-1][pan.r][pan.c]&&visit[pan.l-1][pan.r][pan.c]) { visit[pan.l-1][pan.r][pan.c]=0; qun[tail].l=pan.l-1; qun[tail].r=pan.r; qun[tail].c=pan.c; qun[tail].depth=pan.depth+1; tail++; } if(map[pan.l][pan.r-1][pan.c]&&visit[pan.l][pan.r-1][pan.c]) { visit[pan.l][pan.r-1][pan.c]=0; qun[tail].l=pan.l; qun[tail].r=pan.r-1; qun[tail].c=pan.c; qun[tail].depth=pan.depth+1; tail++; } if(map[pan.l][pan.r][pan.c-1]&&visit[pan.l][pan.r][pan.c-1]) { visit[pan.l][pan.r][pan.c-1]=0; qun[tail].l=pan.l; qun[tail].r=pan.r; qun[tail].c=pan.c-1; qun[tail].depth=pan.depth+1; tail++; } if(map[pan.l+1][pan.r][pan.c]&&visit[pan.l+1][pan.r][pan.c]) { visit[pan.l+1][pan.r][pan.c]=0; qun[tail].l=pan.l+1; qun[tail].r=pan.r; qun[tail].c=pan.c; qun[tail].depth=pan.depth+1; tail++; } if(map[pan.l][pan.r+1][pan.c]&&visit[pan.l][pan.r+1][pan.c]) { visit[pan.l][pan.r+1][pan.c]=0; qun[tail].l=pan.l; qun[tail].r=pan.r+1; qun[tail].c=pan.c; qun[tail].depth=pan.depth+1; tail++; } if(map[pan.l][pan.r][pan.c+1]&&visit[pan.l][pan.r][pan.c+1]) { visit[pan.l][pan.r][pan.c+1]=0; qun[tail].l=pan.l; qun[tail].r=pan.r; qun[tail].c=pan.c+1; qun[tail].depth=pan.depth+1; tail++; } } return 0;}int main(){ int l,r,c,t,i,j,s; char str[50]; while(scanf("%d%d%d%*c",&l,&r,&c)&&(l||r||c)) { memset(map,0,sizeof(map)); for(t=1;t<=l;t++) { for(i=1;i<=r;i++) { gets(str); for(j=1;j<=c;j++) { s=get(str[j-1]); if(s)map[t][i][j]=1; if(s==2) { first.l=t; first.r=i; first.c=j; } if(s==3) { last.l=t; last.r=i; last.c=j; } } } if(t!=l) getchar(); } if(bfs(first.l,first.r,first.c)) { printf("Escaped in %d minute(s).\n",min-1); } else { printf("Trapped!\n"); } } return 0;}
- uva 532 - Dungeon Master
- uva 532 - Dungeon Master
- uva 532 - Dungeon Master
- uva 532 - Dungeon Master
- uva-532 - Dungeon Master
- UVa 532 - Dungeon Master
- UVa 532 - Dungeon Master
- UVA 532 - Dungeon Master
- UVA 532 - Dungeon Master
- UVA 532 - Dungeon Master
- UVa 532Dungeon Master
- uva 532 - Dungeon Master
- UVA 532 Dungeon Master
- uva 532 - Dungeon Master
- uva 532 Dungeon Master
- UVa 532 - Dungeon Master
- UVA 532 Dungeon Master
- UVA 532 - Dungeon Master
- 一个Activity跳转到另一个ListActivity中总结
- 安装 Ubuntu
- Objective-c NSFileHandle
- 2012年7月31日16:30:08
- oracle 同时更新(update)多个字段多个值
- uva-532 - Dungeon Master
- 731
- Android学习札记35:onSaveInstanceState (Bundle outState)方法
- 深度解析IOS开发中编码转换方法
- 菜鸟浅谈数据库之 -----事务管理
- 查询并行计划的SQL语句
- 未雨绸缪之关系数据库
- XHTML的规范
- hdu 1548 A strange lift