Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
阿牛!帮我看看啊! 那个地方有问题啊!#include<stdio.h> struct space { int x; int y; int z; int time; }; struct space q[27010]; int R,C,L,sx,sy,sz,ex,ey,ez; char map[31][31][31]; int use[31][31][31]; int dir[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};//表示6个搜索的方法 In(int x,int y,int z) { if(x>=0&&x<L&&y>=0&&y<R&&z>=0&&z<C) return 1; else return 0; } int BFS() { int i,x,y,z,top=1,base=0; struct space a; while(top!=base) { if(q[base].x==ex&&q[base].y==ey&&q[base].z==ez) return q[base].time; a=q[base++]; for(i=0;i<6;i++) { x=a.x+dir[i][0]; y=a.y+dir[i][1]; z=a.z+dir[i][2]; if(In(x,y,z)&&!use[x][y][z]) { q[top].x=x; q[top].y=y; q[top].z=z; q[top].time=a.time+1; use[x][y][z]=1; if(x==ex&&y==ey&&z==ez) return q[top].time; top++; } } } return -1; } int main() { int i,j,k,min; char s[80]; while(scanf("%d%d%d%*c",&L,&R,&C)&&(R||C||L)) { memset(use,0,sizeof(use)); for(i=0;i<=L-1;i++) { for(j=0;j<=R-1;j++) { gets(map[i][j]); for(k=0;k<=C-1;k++) { if(map[i][j][k]=='S') { sx=i; sy=j; sz=k; } if(map[i][j][k]=='E') { ex=i; ey=j; ez=k; } } } gets(s); } printf("%d %d %d \n",ex,ey,ez); /* for(i=0;i<=L-1;i++) { for(j=0;j<=R-1;j++) { for(k=0;k<=C-1;k++) printf("%c",map[i][j][k]); printf("\n"); } printf("\n\n"); } */ q[0].x=sx; q[0].y=sy; q[0].z=sz; q[0].time=0; use[sx][sy][sz]=1; min=BFS(); printf("%d\n",min); if(min==-1) printf("Trapped!\n"); else printf("Escaped in %d minute(s).\n",min); } return 0; } /* 3 4 5 S.... .###. .##.. ###.# ##### ##### ##.## ##... ##### ##### #.### ####E 1 3 3 S## #E# ### 0 0 0 Escaped in 11 minute(s). Trapped! */ Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator