#include
#include
using namespace std;
int map[501][501][501],T=1,W,X,Y,Z;
int F[6][3]={{0,0,1},{0,0,-1},{0,-1,0},{0,1,0},{1,0,0},{-1,0,0}};
struct node{
int x,y,z,l;
}Q[1000001],S,E;
char c;
int BFS()
{
W++;
Q[W]=S;
while(T<=W)
{
S=Q[T];
T++;
S.l++;
for(int i=0;i<6;i++)
{
S.x+=F[i][0];
S.y+=F[i][1];
S.z+=F[i][2];
if(S.x==E.x && S.y==E.y && S.z==E.z)
{
return S.l;
}
if(S.x>=0 && S.x=0 && S.y=0 && S.zx-=F[i][0];
S.y-=F[i][1];
S.z-=F[i][2];
}
}
return -1;
}
int main()
{
while(true)
{
cin>>X>>Y>>Z;
if(X==0)
{
break;
}
for(int i=0;ifor(int j=0;jfor(int k=0;k>c;
if(c!='#')
{
map[i][j][k]=0;
}
else
{
map[i][j][k]=1;
}
if(c=='S')
{
S.x=i;
S.y=j;
S.z=k;
}
if(c=='E')
{
E.x=i;
E.y=j;
E.z=k;
}
}
}
}
int num=BFS();
if(num==-1) cout<<"Trapped!"<else cout<<"Escaped in "<" minute(s)."<
##错误原因
除 一号 and 三号 测试点 外均未通过
根据您提供的代码和错误信息,我猜测可能是因为没有正确处理边界条件导致的。在进行 BFS 时,需要注意判断越界的情况,并在边界外提前停止搜索。
另外,这道题也需要注意初始化的问题。您在第一个 while 循环中已经将 T 和 W 的值都赋值为 1 了,但在下一个 while 循环中,T 又被赋值为 1。这可能会导致无法正常进入循环,从而导致程序无法正常执行。建议您在第二个 while 循环中将 T 的值赋为 1 后再进行判断。
以完成