B-监狱逃脱(BFS)
监狱逃脱
简单的BFS搜索
数组清空使我裂开
memset(vis, 0, sizeof(int));//只清空第一位memset(vis, 0, sizeof(vis));//全部清空memset(vis, 0, 35*35*35*sizeof(int));//清空
AC代码
#include<iostream>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
int L, R, C;
int cnt = 0, ans = 0;
char mp[35][35][35];
int vis[35][35][35];
int to[6][3] = {{0,0,1}, {0,1,0}, {0,0,-1}, {0,-1,0}, {1,0,0}, {-1,0,0}};struct node{int x, y, z;int tot;
};node Ss, Ee;int check(node n){if(n.z >= L || n.x >= R || n.y >= C || n.z < 0 || n.x < 0 || n.y < 0) return 0;else if(vis[n.z][n.x][n.y] == 1) return 0;else if(mp[n.z][n.x][n.y] == '#') return 0;return 1;
}int bfs(){node now, next;queue<node> Q;vis[Ss.z][Ss.x][Ss.y] = 1;Q.push(Ss);while(!Q.empty()){now = Q.front();Q.pop();if(now.z == Ee.z && now.x == Ee.x && now.y == Ee.y){ return now.tot;}for(int i = 0; i < 6; i++){next.z = now.z + to[i][0];next.x = now.x + to[i][1];next.y = now.y + to[i][2];if(check(next)){next.tot = now.tot + 1;vis[next.z][next.x][next.y] = 1;Q.push(next);}}}return 0;
}int main(){while(scanf("%d%d%d", &L, &R, &C) == 3, L+R+C){// 发现结束输入新大陆,好耶!for(int i = 0; i < L; i++){for(int j = 0; j < R; j++){cin >> mp[i][j];for(int k = 0; k < C; k++){if(mp[i][j][k] == 'S') Ss.z = i, Ss.x = j, Ss.y = k, Ss.tot = 0;if(mp[i][j][k] == 'E') Ee.z = i, Ee.x = j, Ee.y = k;}}}ans = 0;// 可有可无//memset(vis, 0, sizeof(int));//debug到裂开memset(vis, 0, sizeof(vis));ans = bfs();if(ans) printf("Escaped in %d minute(s).\n", ans);else cout << "Trapped!\n";}return 0;
}
B-监狱逃脱(BFS)相关推荐
- 云南毒贩越狱出逃 监狱安防漏洞都在哪儿?
这几天,云南越狱事件是刷了一次网友们的屏,近日,多家媒体报道了云南省第一监狱发生的越狱事件.据悉,2017年5月2日上午8时20分,云南省第一监狱七监区在押罪犯张林仓(男,27岁,云南省马龙县人,因运 ...
- 脱逃者2 TheEscapists 2 for Mac v2017 – 好玩的冒险游戏
关于这款游戏 终极监狱沙箱! 全力以赴从世界上最艰苦的监狱中逃脱出来.探索截至目前最大的监狱,该监狱建有多层地板.屋顶.通风口和地下隧道. 你必须遵守监狱的规定,参加点名,做监狱工作并遵循严格的日常安 ...
- java 单页面spa_Javascript 与 SPA单页Web富应用
书单推荐 # <单页Web应用:JavaScript从前端到后端>http://download.csdn.net/detail/epubitbook/8720475 # <MVC的 ...
- 哈理工第六届程序设计大赛 G 逃脱(BFS)
思路:一开始我预处理了每个格子被火燃烧的最短时间然后BFS,WA到不能自理,后来没预处理直接都扔进队列里就A了... #include<bits/stdc++.h> using names ...
- 算法题(四十):BFS解决网易2017年笔试题——地牢逃脱
题目描述 给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一 ...
- 地牢逃脱(BFS(广度优先搜索))
题目描述 给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一 ...
- 实现BFS之“营救”
广度优先遍历(Breadth First Search,BFS)是一个分层的搜索过程,没有回退过程,是非递归的. DFS与BFS的小秘密: 1.深度优先搜索算法的思路很简单,比较好理解,但得到的解不是 ...
- 1689: 营救小明(bfs+priority_queue逆向思维)
1689: 营救小明 时间限制: 1 Sec 内存限制: 32 MB [提交][状态][讨论版] 题目描述 一天,小明梦见自己被外星人抓走了,他被关在了一座监狱里,这座监狱形如N*M(N,M<= ...
- *【HDU - 1242 】 Rescue (反向dfs,或bfs)
题干: Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N ...
最新文章
- Java培训完可以应用在什么领域
- centos7搭建需密码登入的简易ftp服务器
- unet图片数据增强_numpy实现深度学习遥感图像语义分割数据增强(支持多波段)
- 天津鑫茂工业园区--------------三维虚拟现实系统
- 实验吧Web-易-天网管理系统(php弱类型,==号)
- 循环队列的进队算法c语言,循环队列的定义,入队算法,出队算法,遍历算法,及其代码实现-Go语言中文社区...
- jQuery——高级(js对象、json、ajax)
- 分库分表及其解决方案
- Spring MVC——数据检验步骤
- 移动时代软件测试团队该往哪里去?
- micropython gpio_micropython GPIO
- 冗余技术----热备份网关协议
- 系统应用和第三方应用跳转
- xp系统打印机没有服务器属性设置,xp系统打印机纸张设置的方法
- Gram矩阵与卷积网络中的卷积的直观理解
- OpenCV实战——基于GrabCut算法的图像分割
- 超硬核!兔兔阿里p7学长给的面试知识库
- 2022-2027年中国海洋油气开采行业市场全景评估及发展战略规划报告
- jsp 模板引擎。无需 tomcat,只需一个 jar 包直接根据 jsp 源文件渲染得到 html 页面
- 计算机文本格式在哪,临时文件在哪里?计算机上的临时文件在哪里?