POJ 2225 - Asteroids!
来源:互联网 发布:1024程序员节 编辑:程序博客网 时间:2024/05/17 00:05
题目分析:
和POJ-2251基本上差不多,只是注意一点:输入的顺序,2251是正常顺序x,y,z,而本题则是z,y,x,只要注意这一点,其他的和2251就一样了,也是3维的BFS;
/*
START 1
O
0 0 0
0 0 0
END
START 3
XXX
XXX
XXX
OOO
OOO
OOO
XXX
XXX
XXX
0 0 1
2 2 1
END
START 5
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
0 0 0
4 4 4
END
*/
/*
1 0
3 4
NO ROUTE
*/
code:
#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
using namespace std;
struct node
{
int x,y,z,step;
} q,p;
int direct[6][3]= {{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1}};
char map[101][101][101];
bool flag[101][101][101];
int n;
bool judge(int xi,int yi,int zi)
{
if(xi>=0 && xi<n && yi>=0 && yi< n && zi>=0&& zi<n && !flag[xi][yi][zi] && map[xi][yi][zi]!=\'X\')
return true;
return false;
}
int x1,x2,y1,y2,z1,z2;
int bfs()
{
queue<node> Q;
memset(flag,false,sizeof(flag));
p.x=x1;
p.y=y1;
p.z=z1;
p.step=0;
flag[x1][y1][z1]=true;
Q.push(p);
while(!Q.empty())
{
p=Q.front();
Q.pop();
if(p.x==x2 && p.y==y2 && p.z==z2)
return true;
for(int i=0; i<6; i++)
{
int tx=p.x+direct[i][0];
int ty=p.y+direct[i][1];
int tz=p.z+direct[i][2];
if(judge(tx,ty,tz))
{
q.x=tx;
q.y=ty;
q.z=tz;
q.step=p.step+1;
flag[q.x][q.y][q.z]=true;
Q.push(q);
}
}
}
return false;
}
int main()
{
//freopen(\"in.txt\",\"r\",stdin);
//freopen(\"out.txt\",\"w\",stdout);
char str[10];
while(scanf(\"%s %d\",str,&n)!=EOF)
{
memset(map,\'X\',sizeof(map));
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
for(int k=0; k<n; k++)
cin>>map[i][j][k];
cin>>z1>>y1>>x1;
cin>>z2>>y2>>x2;
cin>>str;
if(!bfs())
cout<<\"NO ROUTE\"<<endl;
else
cout<<n<<\" \"<<p.step<<endl;
}
return 0;
}
- POJ 2225 - Asteroids!
- poj 2225 Asteroids!【BFS】
- zoj 1438 || poj 2225 Asteroids!
- POJ 2225 && HDU 1240 Asteroids!(bfs)
- HDU 1240——Asteroids!(三维BFS)POJ 2225——Asteroids
- POJ 3041 Asteroids
- poj 3041 Asteroids
- POJ-3041 Asteroids
- Poj 3041 Asteroids
- poj 3041 Asteroids
- poj 3041 Asteroids
- POJ:3041Asteroids
- POJ-3040-Asteroids
- poj 3041 Asteroids
- POJ 3041 Asteroids
- POJ 3041 Asteroids
- POJ 3041 Asteroids
- poj 3014 Asteroids
- POJ 1979 - Red and Black
- POJ 3126 - Prime Path
- POJ 3278 - Catch That Cow
- POJ 2312 - Battle City
- POJ 2251 - Dungeon Master
- POJ 2225 - Asteroids!
- POJ 1101 - The Game
- BFS 宽度优先搜索——初学
- POJ题目分类(算法分类较详细)
- HDU 4004 - The Frog\'s Games 第36届ACM/ICPC亚洲大连赛区网络赛
- HDU 题目分类
- UVA 10115 - Automatic Editing
- HDU 2909 - Expected Allowance
- 123 - Searching Quickly