| ||||||||||
| 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 | |||||||||
Re:大牛帮忙看看找了一天w了n会就是不晓得哪里错了In Reply To:大牛帮忙看看找了一天w了你】 Posted by:k880331 at 2009-07-30 14:22:51 #include<stdio.h>
int maze[40][40][40];
int fx[6]={-1,1,0,0,0,0},fy[6]={0,0,-1,1,0,0},fz[6]={0,0,0,0,1,-1};
int qh,qe,L, R, C,bl;
char abc[40][40][40];
struct
{
int x,y,z,pre;
}sq[2000000];
int BFS();
int checkout(int a,int b,int c);
int output();
int main()
{
int a,b,c;
while(scanf("%d%d%d",&L, &R, &C)&&L!=0&&R!=0&&C!=0)
{
bl=0;
for (a=0;a<L;a++)
for(b=0;b<R;b++)
scanf("%s",abc[a][b]);
for(a=0;a<40;a++)
for(b=0;b<40;b++)
for(c=0;c<40;c++)
maze[a][b][c]=0;
BFS();
if(bl==0)
printf("Trapped!\n");
}
return 0;
}
int BFS()
{
int a,b,c,k;
qh=-1;
qe=0;
sq[0].pre=-1;
for(a=0;a<L;a++)
for(b=0;b<R;b++)
for(c=0;c<C;c++)
if(abc[a][b][c]=='s')
{
sq[0].x=a;
sq[0].y=b;
sq[0].z=c;
}
while(qh!=qe)
{
qh++;
for(k=0;k<6;k++)
{
a=sq[qh].x+fx[k];
b=sq[qh].y+fy[k];
c=sq[qh].z+fz[k];
if(checkout( a, b, c)==1)
{
qe++;
sq[qe].x=a;
sq[qe].y=b;
sq[qe].z=c;
//printf(" <%d%d%d%d%d> ",a,b,c,qe,qh);
sq[qe].pre=qh;
//printf(" <%d%d%d%d%d> ",a,b,c,qe,sq[qe].pre);
maze[a][b][c]=1;
if(abc[a][b][c]=='E')
{
output();
return 0;
}
}
}
}
return 0;
}
int checkout(int a,int b,int c)
{
if(a<0||a>L-1||b<0||b>R-1||c<0||c>C-1)
return 0;
if(abc[a][b][c]=='#'||maze[a][b][c]==1)
return 0;
return 1;
}
int output()
{
int cout=0;bl=1;
while(sq[qe].pre!=-1)
{
//printf(" %d ",qe);
qe=sq[qe].pre;
cout++;
}
//printf(" %d ",qe);
//printf(" %d ",sq[qe].pre);
printf("Escaped in %d minute(s).\n",cout);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator