3D dungeon
来源:互联网 发布:中国人寿储备主管知乎 编辑:程序博客网 时间:2024/05/27 01:44
http://acm.nyist.net/JudgeOnline/problem.php?pid=353
#include<iostream>
#include<queue>
#include<cstring>
#include<cstdio>
using namespace std;
struct node
{
int x,y,z;
int time;
};
int vis[40][40][40],sx,sy,sz,ex,ey,ez,n,m,l;
char map[40][40][40];
queue<node>q;
int bfs()
{
int x,y,z,t,i;
memset(vis,0,sizeof(vis));
vis[sx][sy][sz]=1;
node kk;
kk.x=sx;
kk.y=sy;
kk.z=sz;
kk.time=0;
q.push(kk);
int hx[]={0,0,1,-1,0,0},hy[]={0,0,0,0,1,-1},hz[]={1,-1,0,0,0,0};
while(!q.empty())
{
node tmp=q.front();
q.pop();
x=tmp.x;
y=tmp.y;
z=tmp.z;
t=tmp.time;
for(i=0;i<6;i++)
{
int nx=x+hx[i];
int ny=y+hy[i];
int nz=z+hz[i];
if(!vis[nx][ny][nz] && map[nx][ny][nz]!='#' && nx>=1 && nx<=l && ny>=1 && ny<=n && nz>=1 && nz<=m)
{
if(nx==ex && ny==ey && nz==ez)
{
return t+1;
}
vis[nx][ny][nz] = 1;
node temp;
temp.x = nx;
temp.y = ny;
temp.z = nz;
temp.time = t + 1;
q.push(temp);
}
}
}
return -1;
}
int main()
{
int k,i,j;
while(cin>>l>>n>>m,l||n||m)
{
for(i=1;i<=l;i++)
for(j=1;j<=n;j++)
for(k=1;k<=m;k++)
{
cin>>map[i][j][k];
if(map[i][j][k]=='S')
{
sx=i;
sy=j;
sz=k;
}
if(map[i][j][k]=='E')
{
ex=i;
ey=j;
ez=k;
}
}
int ans=bfs();
if(ans == -1)
printf("Trapped!\n");
else
printf("Escaped in %d minute(s).\n",ans);
while(!q.empty())
q.pop();
}
return 0;
}
- 3D dungeon
- 3D dungeon
- 3D dungeon
- nyoj353 3D dungeon
- 3D dungeon
- 3D dungeon
- NYOJ353 3D dungeon 【BFS】
- NYOJ 353 3D dungeon
- 353 3D dungeon【bfs】
- NYOJ 353-3D dungeon
- NYOJ 353 3D dungeon
- 3D dungeon(bfs)
- 题目353:3D dungeon
- NYOJ 353 3D dungeon + zoj 1940 Dungeon Master
- NYOJ 353 3D dungeon 【bfs】
- nyoj 353 3D dungeon 【bfs】
- NYOJ 353--3D dungeon【水题 && BFS】
- NYOJ 353 3D dungeon (BFS)
- Ubuntu14.04搭建Android Studio
- 杭电ACM1194——Beat the Spread!
- git 上传本地文件到github
- 【VR】Leap Motion 官网文档 手型资源
- 双端队列简要实现
- 3D dungeon
- Altium Designer 中Device Sheet Symbol 与 Sheet Symbol 的使用
- css基础学习之css sprite(css精灵)
- mysql事务隔离级别
- C++多态性 虚函数与纯虚函数 重载与覆盖
- c语言作死——指针
- PHP设计模式——桥接模式
- 学生信息管理系统错误汇总(二)
- 习题3-21