答案
2026-02-18 12:04:45
发布于:浙江
7阅读
0回复
0点赞
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
struct node{int x,y,z,step;};
int n,sx,sy,sz,ex,ey,ez;
char mp[25][25][25];
bool vis[25][25][25];
int dx[6]={1,-1,0,0,0,0};
int dy[6]={0,0,1,-1,0,0};
int dz[6]={0,0,0,0,1,-1};
int main(){
cin>>n;
for(int k=0;k<n;k++){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>mp[k][i][j];
if(mp[k][i][j]=='S'){sx=i;sy=j;sz=k;}
if(mp[k][i][j]=='E'){ex=i;ey=j;ez=k;}
}
}
}
memset(vis,0,sizeof(vis));
queue<node>q;
q.push({sx,sy,sz,0});
vis[sz][sx][sy]=1;
int ans=-1;
while(!q.empty()){
node t=q.front();q.pop();
if(t.x==ex&&t.y==ey&&t.z==ez){ans=t.step;break;}
for(int i=0;i<6;i++){
int nx=t.x+dx[i],ny=t.y+dy[i],nz=t.z+dz[i];
if(nx<0||nx>=n||ny<0||ny>=n||nz<0||nz>=n)continue;
if(vis[nz][nx][ny])continue;
if(mp[nz][nx][ny]=='#')continue;
vis[nz][nx][ny]=1;
q.push({nx,ny,nz,t.step+1});
}
}
cout<<ans;
return 0;
}
这里空空如也




有帮助,赞一个