我阅读了很多有关如何解决迷宫问题的问答,并熟悉在编程中使用递归。我的情况略有不同:
我正在尝试开发一台机器(使用Java语言)来解决一个二维竞技场,该竞技场只有一个入口,可以位于地图上的任何位置,而不仅仅是在边缘。目标不是找到出路(因为没有这样的出路,入口点就是出口),而是走遍所有地方,寻找收藏品并避开障碍物。
想象一下这是一个挖掘工在矿井里。黑暗中,你只能看到周围2、3、4个瓷砖,而你所能看到的范围内只有收藏品,因为它们会闪烁。直到挖掘工尝试并无法移动时,才会“看到”障碍物和地图的边缘。这意味着我们不知道地图的完整大小和形状。有时它是一系列长而窄的隧道,有时它是一组大房间(30x100块),或者两者的组合。
我曾经尝试过使用递归的简单迷宫解决方案,在房间式地图中进行操作,其中半个房间为空白(没有障碍物和收藏品)。从这部分房间开始,挖掘工要在这些空块中来回走动数十次,直到它最终玩尽所有可能的方法,最终到达房间的另一端。
显然,我需要针对这种地图采用不同的方法,而这种简单的迷宫解决方案非常适用于行走长隧道(好吧,几乎是)。
对于那些阅读到这里的人,以下是附加条件和特性列表:
1.虽然大多数收藏品在被“挖掘”时会消失并让路,但有些会变成障碍物,无法通过。
2.地图周围有门通往另一个地图。可以将其想象为电梯和楼层。
3.有拉杆、开门的钥匙、移动的石头以及放置在某些位置以解锁区域等。
嗯,这是一个相当棒的案例,当然,我的挖掘工只会做简单的工作(1.和2.很容易编码,而3.则是为艾萨克·阿西莫夫准备的)。
因此,如果不清楚我正在询问什么,请看这里:
如何改进我的算法,以便在已经清晰的区域中不要走那么多次,并且在查找收藏品时更加“聪明”,无论地图类型如何?
我正在尝试开发一台机器(使用Java语言)来解决一个二维竞技场,该竞技场只有一个入口,可以位于地图上的任何位置,而不仅仅是在边缘。目标不是找到出路(因为没有这样的出路,入口点就是出口),而是走遍所有地方,寻找收藏品并避开障碍物。
想象一下这是一个挖掘工在矿井里。黑暗中,你只能看到周围2、3、4个瓷砖,而你所能看到的范围内只有收藏品,因为它们会闪烁。直到挖掘工尝试并无法移动时,才会“看到”障碍物和地图的边缘。这意味着我们不知道地图的完整大小和形状。有时它是一系列长而窄的隧道,有时它是一组大房间(30x100块),或者两者的组合。
我曾经尝试过使用递归的简单迷宫解决方案,在房间式地图中进行操作,其中半个房间为空白(没有障碍物和收藏品)。从这部分房间开始,挖掘工要在这些空块中来回走动数十次,直到它最终玩尽所有可能的方法,最终到达房间的另一端。
显然,我需要针对这种地图采用不同的方法,而这种简单的迷宫解决方案非常适用于行走长隧道(好吧,几乎是)。
对于那些阅读到这里的人,以下是附加条件和特性列表:
1.虽然大多数收藏品在被“挖掘”时会消失并让路,但有些会变成障碍物,无法通过。
2.地图周围有门通往另一个地图。可以将其想象为电梯和楼层。
3.有拉杆、开门的钥匙、移动的石头以及放置在某些位置以解锁区域等。
嗯,这是一个相当棒的案例,当然,我的挖掘工只会做简单的工作(1.和2.很容易编码,而3.则是为艾萨克·阿西莫夫准备的)。
因此,如果不清楚我正在询问什么,请看这里:
如何改进我的算法,以便在已经清晰的区域中不要走那么多次,并且在查找收藏品时更加“聪明”,无论地图类型如何?