使用堆栈来遍历和解决迷宫 - Java

2024-01-07

所以我正在尝试创建一个迷宫求解器程序来解决 X 和 O 的迷宫。我想做的是创建一个点类,这样我就可以创建一个二维点数组,这将允许打印到输出页面以及相对简单地实现堆栈。

我想在实际程序本身中实现的一般思想的最简单算法我认为应该是:

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 类时遇到了困难。我知道对于 Points,我应该设置 X 坐标,并设置 Y 坐标以及两者的吸气剂。你认为我需要比这两个更多的方法吗?比如,我是否应该创建一个传递 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 X X O

您确定您的算法可以解决任何迷宫吗?我认为它会陷入这个简单的模型中(其中 S 是开始,F 是结束):

xxxxxxxxxx
Sooooooxxx
xxxxxxoxxx
xxxxxxFxxx

你的算法将沿着第一个走廊前进,直到它面临坠落,左转,面向“北”墙,再次左转,然后沿着第一个走廊走回,在那里它会再次左转两次,并不断重复这个问题。

右手定则算法(参见维基百科页面 http://en.wikipedia.org/wiki/Maze_solving_algorithm#Wall_follower,以及更多迷宫算法的其他部分)应该可以解决任何没有循环的迷宫,并且应该很容易在 java 中实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用堆栈来遍历和解决迷宫 - Java 的相关文章

随机推荐