幻象迷宫可以认为是无限大的,不过它由若干个 N×M 的矩阵重复组成。矩阵中有的地方是道路,用 . 表示;有的地方是墙,用 # 表示。LHX 和 WD 所在的位置用 S 表示。也就是对于迷宫中的一个点(x,y),如果 (xmodn,ymodm) 是. 或者S,那么这个地方是道路;如果 (xmodn,ymodm) 是#,那么这个地方是墙。LH...
题目:幻象迷宫题目链接:https://www.luogu.com.cn/problem/P1363题意:有一可由无数个N×M的迷宫通过拼接无限拓展的图,即图中点(x,y)与点(xmodn,ymodm)处的迷宫构造完全相同。图中.为路,#为墙,S为起始点。现由起点出发,试问通过上下左右移动是否可到达距离起点的无限远处。
有一个3* 3的迷宫 如果从2, 2开始向右走,右面一个点是2, 3,再右面一个点是2,4,而此时这个点已经出去了,那么现在可以对4取模得到1,这样2, 3的下一个点就是2, 1,从而达到无限走的效果 AC代码: #include<iostream> #include<memory.h> using namespace std; const int maxn = 1500 + 1; const ...
洛谷P1363幻象迷宫 幻象迷宫 题目描述 幻象迷宫可以认为是无限大的,不过它由若干个N*M的矩阵重复组成。矩阵中有的地方是道路,用'.'表示;有的地方是墙,用'#'表示。LHX和WD所在的位置用'S'表示。也就是对于迷宫中的一个点(x,y),如果(x mod n,y mod m)是'.'或者'S',那么这个地方是道路;如果(x mod...
P1363 幻象迷宫(dfs) P1363 幻象迷宫(dfs) 取模后的点若被走了两次,则存在环。 注意走两次的点取模前必须不同。 因此我们对每个点维护一下取模前的位置。 然后用标记数组维护位置是否被走过。 然后每次特判一下dfs即可。 时间复杂度: 代码参考题解...
(a % b + b) % b; } bool success; /** * 功能:在邻接矩阵上面的深度优先搜索,从x,y这个点出发,是不是能走出幻象迷宫 * @param x * @param y * @return */ void dfs(int x, int y) { for (int i = 0; i < 4; i++) { //遍历四个方向 int tx = x + dx[i], ty = y +...
P1363 幻象迷宫 判断无限路径(判环) 难点就在判断该点是否会无限走过。 思路是维护目前 \((x,y)\) 下的传送次数,和历史上 \((x, y)\) 的传送次数。 如果 \((x, y)\) 已经被走过,且传送次数又和历史上不同,说明已经开始无限循环了。 #include<iostr
编码时长78分钟,难度“提高+/省选-”,难度大于Phillip and Trains,感觉本题思维难度远大于后者(可能Phillip and Trains是水题)。 题面 时间空间限制 思路 数据规模一下子就大了不少,1500*1500的地图着实让我惊讶,因为从来没见过这么大的地图。不过没有关系,该做的题还是能做的,数据再可怕,只要编码到位就能过。
P1363 幻象迷宫 一、题意分析 题意:给你一个\(n \times m\)的迷宫\(g\)(\(x\),\(y\)范围是\(0 \sim n - 1\)和\(0 \sim m - 1\)),\(\#\)不能走,\(.\)可以走,\(S\)作为起点,现在将迷宫扩展成无穷大,扩展方法是:任意一个\((x, y)\)位置的字符\(c = g(x \% n, y \...
有一个3* 3的迷宫 如果从2, 2开始向右走,右面一个点是2, 3,再右面一个点是2,4,而此时这个点已经出去了,那么现在可以对4取模得到1,这样2, 3的下一个点就是2, 1,从而达到无限走的效果 AC代码: #include<iostream> #include<memory.h> using namespace std; const int maxn = 1500 + 1; const ...