我在试图解决python中的回溯问题。我的代码不仅应该能够识别和达到目标,而且能够输出最快的路径。迷宫看起来是这样的:
xxxxxxx
xSx x
x xx x
x x
xxxx x
x x
x xx xx
x E x
xxxxxxx
Start [1,1]
End [7,2]
我到目前为止编写的回溯函数如下:
def find_escape(rN, cN, route=[]):
route.append([rN, cN])
if is_escape(rN, cN):
return route
else:
我编写了一个递归解决迷宫的程序。它打开一个包含迷宫的文本文件,将其转换为列表,然后尝试递归地解决它。下面是解决这个迷宫的部分:
def search(x,y, mazeList):
# returns True if it has found end of maze
if mazeList[x][y] == 'E':
return True
# returns False if it encounters a wall
elif mazeList[x][y] == '-':
return False
我正在学习如何使用Javascript创建迷宫。我看了下面的代码。基本上,逻辑是随机选择一个正方形(我对值进行了硬编码,以便更好地理解模式),并检查它的邻居是否被访问过。如果是这样,只需跳过该邻居,随机选择一个未访问的邻居,并通过再次检查其邻居来重复此过程……我知道,当目标到达死胡同时,它将回溯。但我没有找到任何让球回溯的代码。请看这里的图片链接:1 [(3,3)是死胡同。for循环检查是否访问了左侧和顶部,以及右侧和底部是越界的。我的问题是for(neighbor of neighbors){...}已经遍历了所有四个邻居,并且跳过了最后一次迭代(在本例中,检查左边的方块),因为它被访问了
我的程序的目的是用递归来递归地解决迷宫。然而,我的迷宫是一个N*N网格,这样每个正方形都有一个方向属性:
NS、EW、NE、NW、SE、SW和X(方块)
每一块都可以顺时针旋转90*。
如果我正在写一个传统迷宫的递归解决方案,我会:
if (x,y outside maze) return false
if (x,y is goal) return true
if (x,y not open) return false
mark x,y as part of solution path
if (FIND-PATH(North of x,y) == true) return true
if (F