我被分配了在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.
O O O O O X O
X X O X O O X
O X O O X X X
X X X O O X O
X X X X O O X
O O O O O O O
X X O X X X O
Run Code Online (Sandbox Code Playgroud)
字符"X"表示墙或阻挡位置,字符"O"表示打开位置.您可以假设迷宫的入口始终位于右下角,出口始终位于左上角.您的程序应将其输出发送到文件.如果找到路径,则输出文件应包含路径.如果未找到路径,则应将消息发送到该文件.请注意,迷宫可能有多个解决方案路径,但在本练习中,您只需要找到一个解决方案,而不是所有解决方案.
您的程序应该使用堆栈来记录它正在探索的路径,并在它到达阻塞位置时回溯.
在编写代码之前,请务必编写完整的算法.随意创建任何其他类,以帮助您完成任务.
Here's my Algorithm: …Run Code Online (Sandbox Code Playgroud) 所以我正在尝试创建一个迷宫求解器程序,它可以解决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
Run Code Online (Sandbox Code Playgroud)
但是我无法想出更深入的算法,也无法获得我的Points类.我知道对于Points我应该设置X坐标,并设置Y坐标以及两者的getter.你认为我需要比这两种更多的方法吗?比如,我应该创建一个传递x坐标的方法,并将y坐标作为参数,这样我就可以将它们作为一个一起推送,而不是单独设置x和y?
这是一个样本迷宫的样子,你从右下角开始尝试遍历左上角,X为墙壁,O为迷宫中的开放空间:
O O O O O X O
X X O X O O X
O X O O X X X
X X X O O X O
X X X X O O X
O O O O O O O
X X O X …Run Code Online (Sandbox Code Playgroud)