#include<stdio.h>
#include<string.h>
#define Maxn 15
char map[Maxn][Maxn][Maxn];
int N,A,B,C,D,E,F;
char start[Maxn];
char end[Maxn];
int move[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
typedef struct{
int x,y,z,n;
}node;
node q,p;
node que[1088];
int main()
{
while(scanf("%s%d",start,&N)!=EOF)
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
scanf("%s",map[i][j]);
}
}
scanf("%d%d%d%d%d%d",&A,&B,&C,&D,&E,&F);
scanf("%s",end);
q.x=A,q.y=B,q.z=C,q.n=0;
map[A][B][C]='X';
int head=1;
int rear=1;
int ok=0;
que[rear++]=q;
while(head<rear)
{
q=que[head];
head++;
if(q.x==D&&q.y==E&&q.z==F)
{
printf("%d %d\n",N,q.n);
ok=1;
break;
}
int tx,ty,tz;
for(i=0;i<6;i++)
{
tx=q.x+move[i][0];
ty=q.y+move[i][1];
tz=q.z+move[i][2];
if(tx>=0&&tx<N&&ty>=0&&ty<N&&tz>=0&&tz<N)
{
if(map[tz][tx][ty]=='O')
{
map[tz][tx][ty]='X';
p.x=tx,p.y=ty,p.z=tz,p.n=q.n+1;
que[rear].x=tx,que[rear].y=ty,que[rear].z=tz,que[rear].n=q.n+1,rear++;
}
}
}
}
if(!ok)
{
printf("NO ROUTE\n");
}
}
return 0;
}
hdu1240 Asteroids! 在处理NO ROUTE有点麻烦,因为sum可以等于0,故用队列,C语言要用结构数组编写队列
最新推荐文章于 2022-02-25 19:38:17 发布