Tag: 迷宫

简单实现迷宫生成方法(随机DFS)

在一次采访中,我的采访者问我这个问题: 开发一个生成随机迷宫的function 如果你以前没有解决过这个问题,这是一个很难在30分钟内解决的问题。 在互联网上有很多解决方案,但似乎没有一个容易。 该方法应该遵循这个约束: 它应该接受迷宫的大小(方形迷宫NxN) 它应该只包含Walls和Path 为简单起见,该算法不需要设置入口和出口 我将用解决方案发布答案​​,以便其他人能够找到这个问题。 生成的迷宫示例: . # # . # . . . . . . . . . . . # # # . # . # # # # . . . . . # . . . . # . # . . # . # # […]

使用堆栈遍历并解决迷宫 – Java

所以我正在尝试创建一个迷宫求解器程序,它可以解决X和O的迷宫问题。 我想要做的是创建一个Point类,这样我就可以创建一个二维点数组,这将允许打印到输出页面以及实现堆栈相对简单。 我想在实际程序中实现的最简单的一般思想算法我认为应该是: 1) Move forward 2) Are you at a wall? 2a) If yes, turn left 3) Are you at the finish? 3a) If no, go to 1 3b) If yes, solved 但是我无法想出一个更深入的算法,以及让我的Points类位于其中。 我知道对于Point我应该设置X坐标,并设置Y坐标以及两者的getter。 你认为我需要比这两种更多的方法吗? 比如,我应该创建一个传递x坐标的方法,并将y坐标作为参数,这样我就可以将它们作为一个一起推送,而不是单独设置x和y? 这是一个样本迷宫的样子,你从右下角开始尝试遍历左上角,X为墙壁,O为迷宫中的开放空间: OOOOOXO XXOXOOX OXOOXXX XXXOOXO XXXXOOX OOOOOOOXXOXXXO

二维迷宫的递归算法?

(这不是重复)我们在所有4个侧面都有一个由X围绕的2D迷宫,也有内部块。 迷宫的所有这些字符都存储在2D数组中。 程序必须找到从’S’开始到目标’G’的路径。 为此,使用名为’solve(int row,int col)的布尔方法,并使用’S’的行和列索引进行初始化。 算法必须是递归的。 如果它能够找到’G’的路径并且其他方面是假的,那么它应该返回true。 这是我试图解决这个显示“部分正确结果”的问题的方法。 public boolean solve(int row, int col) { char right = this.theMaze[row][col + 1]; char left = this.theMaze[row][col – 1]; char up = this.theMaze[row – 1][col]; char down = this.theMaze[row + 1][col]; if (right == ‘G’ || left == ‘G’ || up == ‘G’ || down == […]

Prim用于生成迷宫的算法:获取相邻小区

我正在基于Prim算法的迷宫生成器程序: 该算法是Prim算法的随机版本。 从充满墙壁的网格开始。 选择一个单元格,将其标记为迷宫的一部分。 将单元格的墙添加到墙列表中。 虽然列表中有墙: 从列表中选择一个随机墙。 如果对面的细胞尚未进入迷宫: 使墙成为通道,并将对面的细胞标记为迷宫的一部分。 将单元格的相邻墙添加到墙列表中。 如果对面的单元格已经在迷宫中,请从列表中移除墙壁。 (来自维基百科 ) 我已经理解了算法,我只是坚持这一部分:“知道相邻小区是否构成了迷宫的一部分”(这意味着,首先获取相邻小区)因为小区实际上是树的节点(迷宫,一个二维细胞arrays),墙壁是这些节点之间的边缘,我认为有必要用一对点(x,y)识别每个墙壁。 我怎么知道两个单元是否通过墙连接? (记住每个单元有4面墙) 我想过使用equals()函数。 我只是要求伪代码或你的最佳解释,这将使事情变得更容易。 My Wall类有三个属性:bool isWall(确定它是墙还是单元格之间的通道); int x; int y(标识符)。 如果您认为我需要更多属性,我将很高兴知道。 我知道有一个简单的方法,我只是卡住了;)谢谢你的时间!

简单的Java 2darrays迷宫样本

我正在工作或了解如何创建一个简单的java 2d迷宫 ,它应该如下所示: int [][] maze = { {1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,0,1,0,1,0,1,0,0,0,0,0,1}, {1,0,1,0,0,0,1,0,1,1,1,0,1}, {1,0,0,0,1,1,1,0,0,0,0,0,1}, {1,0,1,0,0,0,0,0,1,1,1,0,1}, {1,0,1,0,1,1,1,0,1,0,0,0,1}, {1,0,1,0,1,0,0,0,1,1,1,0,1}, {1,0,1,0,1,1,1,0,1,0,1,0,1}, {1,0,0,0,0,0,0,0,0,0,1,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1} }; 这个已创建的想法是设置一个起点和目标点并通过使用递归深度首先找到路径。 但必须说我很难创造迷宫。 你有什么建议怎么做吗? 或者也许是教程的链接? 我现在主要关注的是创造迷宫。

用Java创建迷宫求解算法

我被赋予了在Java中创建迷宫求解器的任务。 这是作业: Write an application that finds a path through a maze. The maze should be read from a file. A sample maze is shown below. OOOOOXO XXOXOOX OXOOXXX XXXOOXO XXXXOOX OOOOOOO XXOXXXO 字符“X”表示墙壁或阻挡位置,字符“O”表示打开位置。 你可以假设迷宫的入口总是在右下角,出口总是在左上角。 您的程序应将其输出发送到文件。 如果找到路径,则输出文件应包含路径。 如果未找到路径,则应将消息发送到该文件。 请注意,迷宫可能有多个解决方案路径,但在本练习中,您只需要找到一个解决方案,而不是所有解决方案。 您的程序应该使用堆栈来记录它正在探索的路径,并在它到达阻塞位置时回溯。 在编写代码之前,请务必编写完整的算法。 您可以随意创建任何可帮助您完成作业的其他课程。 Here’s my Algorithm: 1)Initialize array list to hold maze 2)Read text file holding […]

递归暴力迷宫求解器Java

为了编写一个powershell迷宫来解决C程序,我首先编写了这个java程序来测试一个想法。 我是C的新手,打算在java中获得这个权利之后转换它。 结果,我试图远离arraylists,花式库等,以便更容易转换为C.程序需要生成一个最短步骤的单宽度路径来解决迷宫。 我认为我的问题可能在于片段化每个递归传递的路径存储数组。 谢谢你看这个。 -Joe maze: 1 3 3 3 3 3 3 3 3 3 3 0 0 0 3 3 0 3 3 3 0 3 3 3 2 Same maze solved by this program: 4 4 4 4 4 4 4 4 4 4 4 0 0 0 4 3 0 […]