作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我正在尝试创建一个迷宫求解器程序来解决 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 坐标以及两者的 setter/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 X X O
最佳答案
您确定您的算法可以解决任何迷宫问题吗?我认为它会卡在这个简单的模型中(其中 S 是开始,F 是结束):
xxxxxxxxxx
Sooooooxxx
xxxxxxoxxx
xxxxxxFxxx
你的算法会沿着第一个大厅前进,直到它面对秋天,向左转,面对“北”墙,再次向左转,然后沿着第一个走廊走回去,在那里它会再次向左转两次并继续重复这个问题。
右手法则算法(参见 wikipedia page 以及更多迷宫算法的其他部分)应该可以解决任何没有循环的迷宫问题,并且应该很容易在 Java 中实现。
关于java - 使用堆栈遍历和解决迷宫 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9196514/
我是一名优秀的程序员,十分优秀!