| ||||||||||
| 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 <iostream>
# include <string.h>
using namespace std;
char D[30][30][30]={0};
bool used[30][30][30];
int dx[6]={-1,0,0,0,0,1};
int dy[6]={0,-1,0,0,1,0};
int dz[6]={0,0,-1,1,0,0};
int l=0,r=0,c=0;
int sx,sy,sz,ex,ey,ez;
int time=0;
struct point
{
int x,y,z;
};
struct point qu[100000];
void bfs()
{
int head=0,tail=0,head2=0,i=0;
bool reach=false;
memset(qu,0,sizeof(qu));
qu[head].x=sx;
qu[head].y=sy;
qu[head].z=sz;
head++;
used[sx][sy][sz]=true;
while(tail < head)
{
if(used[ex][ey][ez])
{
reach=true;
break;
}
head2=head;
time++;
while(tail < head2)
{
struct point tem1=qu[tail];
tail++;
for(i=0;i<6;i++)
{
struct point tem2;
tem2.x=tem1.x+dx[i];
tem2.y=tem1.y+dy[i];
tem2.z=tem1.z+dz[i];
if(tem2.x>=0 && tem2.y>=0 && tem2.z>=0 && tem2.x<l && tem2.y<r && tem2.z<c && D[tem2.x][tem2.y][tem2.z] != '#' && !used[tem2.x][tem2.y][tem2.z])
{
used[tem2.x][tem2.y][tem2.z]=true;
qu[head]=tem2;
head++;
}
}
}
}
if(reach == false)
time=-1;
}
int main()
{
int i=0,j=0,k=0;
while(scanf("%d%d%d",&l,&r,&c)!=EOF && l && r && c)
{
memset(used,0,sizeof(used));
for(i=0;i<l;i++)
{
for(j=0;j<r;j++)
{
scanf("%s",D[i][j]);
}
}
for(i=0;i<l;i++)
{
for(j=0;j<r;j++)
{
for(k=0;k<c;k++)
{
if(D[i][j][k] == 'S')
{
sx=i;
sy=j;
sz=k;
}
else if(D[i][j][k] == 'E')
{
ex=i;
ey=j;
ez=k;
}
}
}
}
time=0;
bfs();
if(time==-1)
printf("Trapped!\n");
else
printf("Escaped in %d minute(s).\n",time);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator