Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python迷宫递归算法_Python_Maze - Fatal编程技术网

Python迷宫递归算法

Python迷宫递归算法,python,maze,Python,Maze,所以我已经盯着这个看了一段时间了,我不知道如何才能返回这个迷宫的正确路径 2代表墙 MAZE = [[2,2,2,2,1,2], [2,2,1,2,1,2], [2,2,1,2,1,2], [2,1,1,1,1,2], [2,1,2,2,2,2], [2,1,2,2,2,2]] START_ROW = 5 START_COL = 1 END_ROW = 0 END_COL = 4 was_here = [[Fa

所以我已经盯着这个看了一段时间了,我不知道如何才能返回这个迷宫的正确路径

2代表墙

MAZE = [[2,2,2,2,1,2],
        [2,2,1,2,1,2],
        [2,2,1,2,1,2],
        [2,1,1,1,1,2],
        [2,1,2,2,2,2],
        [2,1,2,2,2,2]]

START_ROW = 5
START_COL = 1

END_ROW = 0
END_COL = 4

was_here = [[False]*6 for i in range(6)]
correct_path = [[False]*6 for i in range(6)]

def recursiveSolve(x, y, correct_path):
    if x == END_ROW and y == END_COL:
        print correct_path
        return True

    if MAZE[x][y] == 2 or was_here[x][y]:
        return False
    was_here[x][y] = True

    if x != 0:
        if recursiveSolve(x-1, y, correct_path):

            correct_path[x][y] = True

            return True
    if x != 5: 
        if recursiveSolve(x+1, y, correct_path):
            correct_path[x][y] = True

            return True
    if y != 0:
        if recursiveSolve(x, y-1, correct_path):
            correct_path[x][y] = True

            return True
    if y != 5: 
        if recursiveSolve(x, y+1, correct_path):
            correct_path[x][y] = True

            return True

    return False

print recursiveSolve(START_ROW, START_COL, correct_path)
我的代码运行得很好。它告诉你迷宫是否可解,但我无法打印出显示已解迷宫的数组。如果迷宫是可解的,我想打印一个数组,如下所示:

[False, False, False,  False,  True,  False],
[False, False, False,  False,  True,  False], 
[False, False, False,  False,  True   False], 
[False, True,  True,   True,   True,  False], 
[False, True,  False,  False,  False, False], 
[False, True,  False,  False,  False,  False]

但是我的代码打印出的结果都是False。

是的,因为只有在每次调用recursiveSolve返回后,正确的路径才会被修改。只需将打印移到最后一行之后,瞧!哇!我觉得自己很愚蠢。我盯着这个看了一个多小时。谢谢