UVA532
来源:互联网 发布:程序员简历star 编辑:程序博客网 时间:2024/04/30 08:05
题意:走3D迷宫,找到出口
思想:BFS,六个方向一起搜
#include<iostream>#include<stdio.h>#include<string.h>#define N 50 using namespace std;int vis[N][N][N], Map[N][N][N];char map[N][N][N];int a, n, m, num, c1, c2, c3, d1, d2, d3, flag;int dz[] = {0, 0, 0, 0, -1, 1};int dx[] = {-1, 1, 0, 0, 0, 0};int dy[] = {0, 0, -1, 1, 0, 0};typedef struct space{int z, x, y, d;};void bfs(int z, int x, int y){int front = 0, near = 1;space s[30000];memset(s, 0, sizeof(s));s[0].z = z;s[0].x = x;s[0].y = y;s[0].d = 0;vis[z][x][y] = 1;while(front < near){for(int i = 0; i < 6; i++){int tz = s[front].z + dz[i];int tx = s[front].x + dx[i];int ty = s[front].y + dy[i];if(Map[tz][tx][ty]){if(tz >= 0 && tz < a && tx >= 0 && tx < n && ty >= 0 && ty < m && !vis[tz][tx][ty]){if(tz == c1 && tx == c2 && ty == c3){num = s[front].d + 1;flag = 0;return;}vis[tz][tx][ty] = 1;s[near].z = tz;s[near].x = tx;s[near].y = ty;s[near].d = s[front].d + 1;near++;}}}front++;}}int main(){while(cin>>a>>n>>m && a + n + m){flag = 1;memset(vis, 0, sizeof(vis));memset(Map, 0, sizeof(Map));for(int i = 0; i < a; i++)for(int j = 0; j < n; j++)for(int k = 0; k < m; k++)cin>>map[i][j][k];for(int i = 0; i < a; i++)for(int j = 0; j < n; j++)for(int k = 0; k < m; k++){if(map[i][j][k] == 'E'){c1 = i;c2 = j;c3 = k;Map[i][j][k] = 1;}else if(map[i][j][k] == 'S'){Map[i][j][k] = 1;d1 = i;d2 = j;d3 = k;}else if(map[i][j][k] == '.')Map[i][j][k] = 1;}if(c1 != d1 || c2 != d2 || c3 != d3)bfs(d1, d2, d3);if(flag)printf("Trapped!\n");elseprintf("Escaped in %d minute(s).\n", num);}return 0;}
- UVA532
- uva532
- UVA532
- uva532
- uva532
- Dungeon Master UVA532
- UVA532三维bfs
- Uva532(三维搜索)
- UVA532 Dungeon Master
- uva532--3d迷宫--bfs
- UVA532-Dungeon Master(三维迷宫)
- uva532(三维简单宽度优先搜索)
- c++容器
- 写一个函数判断一个字符串是否是数字
- 乔布斯-遗失的访谈中英双文版-尘封十余年的伟大遇见!
- JFace的本地化--安装JFace语言包
- 1.虚拟机毁坏Mbr,启动拯救模式的具体过程。
- UVA532
- 项目管理
- C# ToString常用技巧总结
- 【Java学习笔记】基础知识学习1【基本输出,数据类型,基础运算符号】
- [HDU1698]Just a Hook
- NoSuchMethodException: $Proxy 的解决方法
- JSValidation框架的使用整理总结
- 选择排序法 弄不懂
- EditPlus配置C环境