POJ 2251 Dungeon Master 搜索入门题
来源:互联网 发布:珠宝设计软件下载 编辑:程序博客网 时间:2024/05/16 08:29
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define INF 0x3f3f3f3f
struct abcd
{
int a,b,c;
int step;
}s[50000];
char maze[50][50][50];
int ok[50][50][50];
int go[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
int x,y,z;
int x0,y0,z0;
int ans;
int check(int i,int j,int k)
{
if((i>=0&&i<x&&j>=0&&j<y&&k>=0&&k<z)&&(maze[i][j][k]=='.'||maze[i][j][k]=='E'))
return 1;
return 0;
}
void bfs()
{
int i,j,k;
int xx,yy,zz;
s[0].a=x0;
s[0].b=y0;
s[0].c=z0;
s[0].step=0;
k=1;
for(i=0;i<k&&i<50000;i++)
{
for(j=0;j<6;j++)
{
xx=s[i].a+go[j][0];
yy=s[i].b+go[j][1];
zz=s[i].c+go[j][2];
if(check(xx,yy,zz)&&ok[xx][yy][zz]==0)
{
s[k].a=xx;
s[k].b=yy;
s[k].c=zz;
s[k].step=s[i].step+1;
ok[xx][yy][zz]=1;
//printf("%d\n",s[k].step);
if(maze[xx][yy][zz]=='E')
{
ans=s[k].step;
return ;
}
k++;
}
}
}
}
int main()
{
int i,j,k;
while(scanf("%d%d%d",&x,&y,&z)==3)
{
if(x==0&&y==0&&z==0)
break;
memset(ok,0,sizeof(ok));
for(i=0;i<x;i++)
for(j=0;j<y;j++)
{
scanf("%s",maze[i][j]);
for(k=0;k<z;k++){
if(maze[i][j][k]=='S')
{
x0=i; y0=j; z0=k;
ok[i][j][k]=1;
}
else if(maze[i][j][k]=='#')
ok[i][j][k]=1;
}
}
ans=0;
bfs();
if(ans)
printf("Escaped in %d minute(s).\n",ans);
else
printf("Trapped!\n");
}
return 0;
}
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define INF 0x3f3f3f3f
struct abcd
{
int a,b,c;
int step;
}s[50000];
char maze[50][50][50];
int ok[50][50][50];
int go[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
int x,y,z;
int x0,y0,z0;
int ans;
int check(int i,int j,int k)
{
if((i>=0&&i<x&&j>=0&&j<y&&k>=0&&k<z)&&(maze[i][j][k]=='.'||maze[i][j][k]=='E'))
return 1;
return 0;
}
void bfs()
{
int i,j,k;
int xx,yy,zz;
s[0].a=x0;
s[0].b=y0;
s[0].c=z0;
s[0].step=0;
k=1;
for(i=0;i<k&&i<50000;i++)
{
for(j=0;j<6;j++)
{
xx=s[i].a+go[j][0];
yy=s[i].b+go[j][1];
zz=s[i].c+go[j][2];
if(check(xx,yy,zz)&&ok[xx][yy][zz]==0)
{
s[k].a=xx;
s[k].b=yy;
s[k].c=zz;
s[k].step=s[i].step+1;
ok[xx][yy][zz]=1;
//printf("%d\n",s[k].step);
if(maze[xx][yy][zz]=='E')
{
ans=s[k].step;
return ;
}
k++;
}
}
}
}
int main()
{
int i,j,k;
while(scanf("%d%d%d",&x,&y,&z)==3)
{
if(x==0&&y==0&&z==0)
break;
memset(ok,0,sizeof(ok));
for(i=0;i<x;i++)
for(j=0;j<y;j++)
{
scanf("%s",maze[i][j]);
for(k=0;k<z;k++){
if(maze[i][j][k]=='S')
{
x0=i; y0=j; z0=k;
ok[i][j][k]=1;
}
else if(maze[i][j][k]=='#')
ok[i][j][k]=1;
}
}
ans=0;
bfs();
if(ans)
printf("Escaped in %d minute(s).\n",ans);
else
printf("Trapped!\n");
}
return 0;
}
0 0
- POJ 2251 Dungeon Master 搜索入门题
- poj 2251 Dungeon Master 搜索
- POJ --2251Dungeon Master(搜索)
- POJ 2251 Dungeon Master (广度搜索)
- POJ 2251-Dungeon Master【简单搜索】
- <三维BFS搜索> POJ 2251 Dungeon Master
- POJ 2251 Dungeon Master (搜索 -- BFS)
- poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- Poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- POJ 2251 Dungeon Master
- POJ-2251-Dungeon Master
- POJ 2251Dungeon Master
- poj 2251 Dungeon Master
- poj 2975
- Dinic算法的原理与构造(转)
- HDU 5676 ztr loves lucky numbers【DFS】
- 嵌入式linux内核制作
- 【数据结构】二叉树遍历
- POJ 2251 Dungeon Master 搜索入门题
- 当自己迷茫的时候要知道怎样去做
- Andoird Studio 字体、主题简单设置
- I00008 百鸡问题
- 在oschina上创建项目并初始化工程
- IntelliJ IDEA14 设置
- 第二次作业(linux下小程序)
- 最优配对问题
- UVALive 7004 Inside, Outside or On(判断点在多边形边上/内部/外部)