【LuoGu 1363】幻象迷宫——深度优先搜索 + 读题
幻象迷宫
题目背景
(喵星人 LHX 和 WD 同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫。)
WD:呜呜,肿么办啊……
LHX:momo...我们一定能走出去的!
WD:嗯,+U+U!
题目描述
幻象迷宫可以认为是无限大的,不过它由若干个 的矩阵重复组成。矩阵中有的地方是道路,用 表示;有的地方是墙,用 表示。LHX 和 WD 所在的位置用 表示。也就是对于迷宫中的一个点,如果 是 或者 ,那么这个地方是道路;如果 是,那么这个地方是墙。LHX 和 WD 可以向上下左右四个方向移动,当然不能移动到墙上。
请你告诉 LHX 和 WD,它们能否走出幻象迷宫(如果它们能走到距离起点无限远处,就认为能走出去)。如果不能的话,LHX 就只好启动城堡的毁灭程序了……当然不到万不得已,他不想这么做。
输入格式
输入包含多组数据,以 EOF 结尾。
每组数据的第一行是两个整数 。
接下来是一个 的字符矩阵,表示迷宫里 到 这个矩阵单元。
输出格式
对于每组数据,输出一个字符串,Yes
或者 No
。
样例 #1
样例输入 #1
样例输出 #1
提示
- 对于 的数据,;
- 对于 的数据,;
- 对于 的数据,,每个测试点不超过 组数据。
解法
看到这种迷宫类型的题目很容易想到。但这题的要求又与常规的题不一样,它要求判断能够从起点只向上、下、左、右四个方向前进能不能走到无穷远处。
所以,问题的关键在于如何判断能否走到无穷远处?
假设存在一条路径,能够通向无穷远处。由于迷宫是不断重复的,因此对于路径上的一个点,一定能走到扩展出来的迷宫中其对应的位置。因此解决方案就呼之欲出:对坐标取模, ,开一个三维数组,其中表示是否已经访问过一次, 记录上一次走到的实际坐标。设当前实际坐标为。如果,且,则说明从一个矩阵中的某一个位置可以走到扩展出来的迷宫中的对应位置。不断重复这个过程,可以一直向外走,因此这种情况就是能够走到无穷远处的地方。
注:一定要排除走回原来位置的情况,这样只是在一个矩阵内绕圈,不算走到无穷远处。
__EOF__

本文链接:https://www.cnblogs.com/yjx-7355608/p/17643750.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!