杭电ACM1240——Asteroids!~~简单的BFS
来源:互联网 发布:qq拼音 ubuntu 编辑:程序博客网 时间:2024/05/21 21:38
这道题目,三维空间上的BFS,给你起点和终点,看能否找到一条路,O表示可以走,X表示不可以走!~
理解了题目,就可以用队列来实现BFS来求解。
下面的是AC 的代码:
#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;class data{public:int xyz;int count;};char map[11][11][11];bool flag[11][11][11];char str[10];int xyz[6][3] = {0,0,1,0,0,-1,0,1,0,0,-1,0,1,0,0,-1,0,0}; //三维上的六个方向int n;int sx, sy, sz; //起点int ex, ey, ez;<span style="white-space:pre"></span> //终点int BFS() //BFS{queue<data>Q;while(!Q.empty())Q.pop();if(sx == ex && sy == ey && sz == ez && map[sx][sy][sz] == 'O' && map[ex][ey][ez] == 'O')return 0;data temp, te;int x, y, z, temp1;temp.xyz = sx * 100 + sy * 10 + sz;temp.count = 0;flag[sx][sy][sz] = true;Q.push(temp);while(!Q.empty()){temp = Q.front();Q.pop();for(int i = 0; i < 6; i++){temp1 = temp.xyz;x = temp1 / 100 + xyz[i][0];temp1 %= 100;y = temp1 / 10 + xyz[i][1];temp1 %= 10;z = temp1 + xyz[i][2];if(x == ex && y == ey && z == ez)return temp.count + 1;if(x >= 0 && x < n && y >= 0 && y < n && z >= 0 && z < n && map[x][y][z] != 'X' && !flag[x][y][z]){te.xyz = x * 100 + y * 10 + z;te.count = temp.count + 1;Q.push(te);flag[x][y][z] = true;}}}return -1;}int main(){//freopen("data.txt", "r", stdin);int i, j, k;while(scanf("%s%d", str, &n) != EOF) //输入的处理!比较麻烦{getchar();for(i = 0; i < n; i++){for(j = 0; j < n; j++){for(k = 0; k < n; k++)scanf("%c", &map[i][j][k]);getchar();}}scanf("%d%d%d", &sx, &sy, &sz);scanf("%d%d%d", &ex, &ey, &ez);getchar();scanf("%s", str);getchar();memset(flag, false, sizeof(flag));int ans = BFS();if(ans < 0)printf("NO ROUTE\n");elseprintf("%d %d\n", n, ans);}return 0;}
0 0
- 杭电ACM1240——Asteroids!~~简单的BFS
- 【搜索之BFS】杭电 hdu 1240 Asteroids!
- Asteroids!-裸的BFS
- 杭电oj 1240 Asteroids!
- HDU 1240——Asteroids!(三维BFS)POJ 2225——Asteroids
- ACM-三维BFS之Asteroids!——hdu1240
- hdoj - 1240 - Asteroids!(三维空间的BFS)
- 杭电1180——诡异的楼梯(BFS+优先队列)
- 杭电ACM1242——Rescue~~BFS+优先队列
- 杭电ACM1372——Knight Moves~~BFS
- 杭电1072——Nightmare(BFS)
- 杭电2952 Counting Sheep(简单BFS过)
- 杭电1495 非常可乐(BFS过)简单搜索
- zoj 1438 Asteroids! BFS
- POJ2225:Asteroids!(BFS)
- hdu 1240 Asteroids BFS
- HDU1240:Asteroids!(BFS)
- hdu1240 Asteroids! (BFS)
- 使用Weka进行数据挖掘
- 杨辉三角java实现
- HDU分类
- 【未完成】fseek后文件指针中_ptr回到文件头:文件指针(FILE *fp)的定义与文件输入缓冲区
- 关于Eclipse中集成Tomcat pluge以及运行Tomcat
- 杭电ACM1240——Asteroids!~~简单的BFS
- 黑马程序员————System类的讲解
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- Qt数据库sqlite总结
- Java中HashMap详解
- Memcache环境搭建_me
- Hibernate框架基础入门
- 进程会话
- Java异常 异常的一些细节