普通的三维广搜,须要注意的是输入:列,行,层
#include#include #include #include #include #define M 11using namespace std;int dir[6][3]={ {0,1,0},{0,-1,0},{1,0,0},{-1,0,0},{0,0,1},{0,0,-1}};//6个方向int vis[M][M][M];char map[M][M][M];int n,m,p,sx,sy,sz,ex,ey,ez;bool ck(int x,int y,int z){ if(x>=0&&x =0&&y =0&&z q; node a,b; a.z=sz,a.x=sx,a.y=sy,a.st=0; vis[sz][sx][sy]=1; q.push(a); while(!q.empty()){ a=q.front(),q.pop(); for(int i=0;i<6;++i){ b.x=a.x+dir[i][0]; b.y=a.y+dir[i][1]; b.z=a.z+dir[i][2]; b.st=a.st+1; if(!ck(b.x,b.y,b.z)) continue; if(b.x==ex&&b.y==ey&&b.z==ez){ cout< <<" "< < >str; getchar(); bfs( ); } return 0;}