您的位置:首页 > 其它

POJ2251 Dungeon Master

2016-03-06 23:31 218 查看
简单的搜索,只是多了一个维度

#include<stdio.h>
#include<string.h>
int l,r,c;
int sx,sy,sz;
char a[31][31][31];
int book[31][31][31];
int xx[6]={1,-1,0,0,0,0};
int yy[6]={0,0,1,-1,0,0};
int zz[6]={0,0,0,0,1,-1};
struct note
{
int x,y,z;
int s;
}que[100000];
void bfs()
{
int head=1,tail=1;
que[tail].x=sx;
que[tail].y=sy;
que[tail].z=sz;
tail++;
int i,j;
int tx,ty,tz;
int flag=0;
while(head<tail)
{
for(i=0;i<6;i++)
{
tx=que[head].x+xx[i];
ty=que[head].y+yy[i];
tz=que[head].z+zz[i];
if(tx<0||ty<0||tz<0||tx>=l||ty>=r||tz>=c||book[tx][ty][tz]||a[tx][ty][tz]=='#')
continue;
book[tx][ty][tz]=1;
que[tail].x=tx;
que[tail].y=ty;
que[tail].z=tz;
que[tail].s=que[head].s+1;
if(a[tx][ty][tz]=='E')
{
printf("Escaped in %d minute(s).\n",que[tail].s);
return;
}
tail++;
}
head++;
}
printf("Trapped!\n");
return;
}
int main()
{
//freopen("t.txt","r",stdin);
while(scanf("%d%d%d",&l,&r,&c)&&(l!=0||r!=0||c!=0))
{

getchar();
memset(a,'\0',sizeof(a));
memset(book,0,sizeof(book));
memset(que,0,sizeof(que));
int i,j,k;
for(i=0;i<l;i++,getchar())
{
for(j=0;j<r;j++,getchar())
{
for(k=0;k<c;k++)
{
scanf("%c",&a[i][j][k]);
if(a[i][j][k]=='S')
{
sx=i;
sy=j;
sz=k;
}
}
}
}
bfs();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: