我写了一个递归解决迷宫的程序。它打开一个包含迷宫的文本文件,将其转换为列表列表,然后尝试递归解决它。这是解决迷宫的部分:
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
elif mazeList[x][y] == '+':
return False
elif mazeList[x][y] == "|":
return False
# returns False if it finds a visited path
elif mazeList[x][y] == '*':
return False
# marks path with '*'
mazeList[x][y] = '*'
# recursive search
if ((search(x+1, y, mazeList))
or (search(x, y-1, mazeList))
or (search(x-1, y, mazeList))
or (search(x, y+1, mazeList))):
return True
return False
在迷宫中,“-”、“+”和“|” 组成迷宫的墙壁,可以导航空白空间,“E”是迷宫的尽头。它从迷宫的左下方开始,然后从那里开始。我希望用 * 标记正确的路径,但是它用 * 标记它采用的每条路径,即使它是它回溯的错误路径。
那么如何编辑我的代码,以便最后只有从开始到结束的正确路径用 * 标记