| ||||||||||
| 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 | |||||||||
哪位大牛棒忙看看DFS做的,测试数据对,可就是wa,,写了一晚了,郁闷!#include <cstdlib>
#include <iostream>
using namespace std;
struct ELEMENT
{
int x,y,z,dir;
};
ELEMENT move[6]={{1,0,0},
{0,1,0},
{-1,0,0},
{0,-1,0},
{0,0,1},
{0,0,-1}
};
ELEMENT from,end,now,next;
ELEMENT Stack[32*32*32];
int top,flag;
int front,rear;
int maze[35][35][35];
int L,R,C;
char p;
int main(int argc, char *argv[])
{ int count;
int i,j,k,v;
scanf("%d%d%d",&L,&R,&C);
while(L!=0 && R!=0 && C!=0)
{ flag=0;
memset(maze,1,sizeof(maze));
scanf("%c",&p);
for(i=0;i<L;i++)
{
for(j=0;j<R;j++)
{
for(k=0;k<C;k++)
{
scanf("%c",&p);
if(p=='#')
maze[i][j][k]=1;
else if(p=='.')
maze[i][j][k]=0;
else if(p=='S')
{
maze[i][j][k]=0;
from.x=i;
from.y=j;
from.z=k;
}
else if(p=='E')
{
maze[i][j][k]=0;
end.x=i;
end.y=j;
end.z=k;
}
}
scanf("%c",&p);
}
scanf("%c",&p);
}
top=-1;
Stack[++top].x=from.x;
Stack[top].y=from.y;
Stack[top].z=from.z;
Stack[top].dir=-1;
while(top!=-1)
{ if(flag==1) break;
now.x=Stack[top--].x;
now.y=Stack[top].y;
now.z=Stack[top].z;
v=Stack[top].dir+1;
while(v<6)
{
next.x=now.x+move[v].x;
next.y=now.y+move[v].y;
next.z=now.z+move[v].z;
if(next.x>=0&&next.x<L&&next.y>=0&&next.y<R&&next.z>=0&&next.z<C)
{
if(!maze[next.x][next.y][next.z]&&next.x==end.x&&next.y==end.y&&next.z==end.z)
{ printf("Escaped in %d minute(s).\n",top);
flag=1;
break;
}
if(!maze[next.x][next.y][next.z])
{ top++;
Stack[top].x=next.x;
Stack[top].y=next.y;
Stack[top].z=next.z;
Stack[top].dir=v;
maze[next.x][next.y][next.z]=2;
now.x=next.x;
now.y=next.y;
now.z=next.z;
v=-1;
}
}
v++;
}
}
if(flag==0) printf("Trapped!\n");
scanf("%d%d%d",&L,&R,&C);
}
system("PAUSE");
return EXIT_SUCCESS;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator