
AcWing 1096. 地牢大师 多维bfs 学会思维上的推导
发布日期:2021-05-12 17:10:47
浏览次数:18
分类:精选文章
本文共 1847 字,大约阅读时间需要 6 分钟。
你现在被困在一个三维地牢中,需要找到最快脱离的出路!
地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接通过,部分包含岩石障碍无法通过。
向北,向南,向东,向西,向上或向下移动一个单元距离均需要一分钟。
你不能沿对角线移动,迷宫边界都是坚硬的岩石,你不能走出边界范围。
请问,你有可能逃脱吗?
如果可以,需要多长时间?
输入格式
输入包含多组测试数据。每组数据第一行包含三个整数 L,R,C 分别表示地牢层数,以及每一层地牢的行数和列数。
接下来是 L 个 R 行 C 列的字符矩阵,用来表示每一层地牢的具体状况。
每个字符用来描述一个地牢单元的具体状况。
其中, 充满岩石障碍的单元格用”#”表示,不含障碍的空单元格用”.”表示,你的起始位置用”S”表示,终点用”E”表示。
每一个字符矩阵后面都会包含一个空行。
当输入一行为”0 0 0”时,表示输入终止。
输出格式
每组数据输出一个结果,每个结果占一行。如果能够逃脱地牢,则输出”Escaped in x minute(s).”,其中X为逃脱所需最短时间。
如果不能逃脱地牢,则输出”Trapped!”。
数据范围
1≤L,R,C≤100 输入样例:3 4 5S.....###..##..###.#############.####...###########.#######E1 3 3S###E####0 0 0
输出样例:
Escaped in 11 minute(s).Trapped!
这道题是类似于图论的一道题,这是求的是最短路程最短的一道题,我们就采取bfs的方法,bfs应该不是很难写,但是这道题是二维bfs的升级版,我们三体(三维差分)都搞定了,bfs最重要的是标记,所以我们解决好这些问题之后,其实这道题也很简单。
代码如下:
#include#include #include using namespace std;const int N=110;char g[N][N][N];int sx,sy,sz;int gx,gy,gz;bool st[N][N][N];struct Node{ int x,y,z; int foot;};int d[6][3]={ { 0 ,1 , 0}, { 1 ,0 , 0}, { 0 ,0 , 1}, { -1,0 , 0}, { 0 ,0 ,-1}, { 0 ,-1, 0}};int l,r,c;int bfs(){ memset(st,false,sizeof st); queue q; q.push({ sx,sy,sz,0}); st[sx][sy][sz]=true; while(q.size()) { auto t=q.front(); q.pop(); for(int i=0;i<6;i++) { int tx=t.x+d[i][0]; int ty=t.y+d[i][1]; int tz=t.z+d[i][2]; if(tx>=l||ty>=r||tz>=c||tx<0||ty<0||tz<0) continue; if(st[tx][ty][tz]||g[tx][ty][tz]=='#') continue; st[tx][ty][tz]=true; if(tx==gx&&ty==gy&&tz==gz) return t.foot+1; q.push({ tx,ty,tz,t.foot+1}); } } return -1;}int main(void){ while(cin>>l>>r>>c,l||r||c) { for(int i=0;i
这次也是比较理想的,一次就过了。

发表评论
最新留言
表示我来过!
[***.240.166.169]2025年05月05日 17时10分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
嵌入式系统试题库(CSU)
2021-05-15
图神经网络7日打卡营学习心得
2021-05-15
electronJS 开发linux App
2021-05-15
MbedOS 设备中的模数转换(ADC)
2021-05-15
【vue】setInterval的嵌套实例
2021-05-15
【SpringBoot】如何配置热部署
2021-05-15
【rabbitMQ】04 如何实现高可用?
2021-05-15
【自考】之信息资源管理(一)
2021-05-15
C# 文本框限制大全
2021-05-15
setup facatory9.0打包详细教程(含静默安装和卸载)
2021-05-15
ionic4 路由跳转传值
2021-05-15
CSDN 怎么写出好看的博客
2021-05-15
pwn题shellcode收集
2021-05-15
python中的序列化
2021-05-15
django中使用celery执行异步任务实现
2021-05-15
lora技术在无线抄表行业应用
2021-05-15
msfvenom的使用&免杀&外网渗透
2021-05-15
HTTP/2 协议详解
2021-05-15