gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:34 25 4
gpt4 key购买 nike

所以我正在尝试创建一个迷宫求解器程序来解决 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com