感谢奆佬王总!
简单广搜,多一维而已,并没有什么区别。。。
话说我博客的证书是什么鬼。。。别人的博客都进得去,我的还要添加例外?!
#include<bits/stdc++.h>
using namespace std;
int x[10]={0,1,0,0,-1,0,0};
int y[10]={0,0,1,0,0,-1,0};
int z[10]={0,0,0,1,0,0,-1};//三个方向移动
char d[35][35][35];
struct dragonborn//我们抓根宝从不盗墓!
{
int x,y,z,s;
}o,p;
queue <dragonborn> v;
int main()
{
int i,j,l,m,n,k,s1,s2,s3;
cin>>m>>n>>k;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
for (l=1;l<=k;l++)
{
cin>>d[i][j][l];
if (d[i][j][l]=='S'){s1=i;s2=j;s3=l;}
}
o.x=s1;o.y=s2;o.z=s3;v.push(o);
while (!v.empty())
{
p=v.front();
for (i=1;i<=6;i++)
{
p=v.front();
p.x+=x[i];p.y+=y[i];p.z+=z[i];
if (p.x>=1&&p.x<=m&&p.y>=1&&p.y<=n&&p.z>=1&&p.z<=k&&d[p.x][p.y][p.z]!='#')//判断此处有无穿墙(石头)
{
p.s++;v.push(p);
if (d[p.x][p.y][p.z]=='E'){cout<<"Escaped in "<<p.s<<" minute(s).";return 0;}d[p.x][p.y][p.z]='#';
}
}
v.pop();
}
cout<<"Trapped!" ;
return 0;
}//结束,非常无聊
the end