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_Search_Path - Fatal编程技术网

在迷宫python中查找路径索引

在迷宫python中查找路径索引,python,search,path,Python,Search,Path,我有一个问题,我想不出任何逻辑: 我有一个迷宫如下: maze = [[1,1,1,1,1,1], [0,0,0,1,1,1], [1,1,0,1,1,1], [1,0,0,1,1,1], [1,0,1,1,1,1], [1,0,0,0,0,0]] 我想按路径的顺序查找0的所有索引 我尝试过的代码: rows, columns = len(maze), len(maze[0]) answer_dict = dic

我有一个问题,我想不出任何逻辑:

我有一个迷宫如下:

maze = [[1,1,1,1,1,1],
        [0,0,0,1,1,1],
        [1,1,0,1,1,1],
        [1,0,0,1,1,1],
        [1,0,1,1,1,1],
        [1,0,0,0,0,0]]
我想按路径的顺序查找
0
的所有索引

我尝试过的代码:

rows, columns = len(maze), len(maze[0])

answer_dict = dict()
count = 1
for i in range(rows):
    for j in range(columns):
        if maze[i][j] == 0:
            answer_dict[count] = {"r": i, "c": j}
            count += 1

print(answer_dict)
# {1: {'r': 1, 'c': 0}, 2: {'r': 1, 'c': 1}, 3: {'r': 1, 'c': 2}, 4: {'r': 2, 'c': 2}, 5: {'r': 3, 'c': 1}, 6: {'r': 3, 'c': 2}, 7: {'r': 4, 'c': 1}, 8: {'r': 5, 'c': 1}, 9: {'r': 5, 'c': 2}, 10: {'r': 5, 'c': 3}, 11: {'r': 5, 'c': 4}, 12: {'r': 5, 'c': 5}}
预期产出:

{1: {'r': 1, 'c': 0}, 2: {'r': 1, 'c': 1}, 3: {'r': 1, 'c': 2}, 4: {'r': 2, 'c': 2}, 5: {'r': 3, 'c': 2}, 6: {'r': 3, 'c': 1}, 7: {'r': 4, 'c': 1}, 8: {'r': 5, 'c': 1}, 9: {'r': 5, 'c': 2}, 10: {'r': 5, 'c': 3}, 11: {'r': 5, 'c': 4}, 12: {'r': 5, 'c': 5}}
在位置5和6处可以看到错误的输出

我想我需要采取一种更递归的方法。任何帮助都将不胜感激

我自己解决了:

def find_path(maze):
    answer_dict = dict()
    count = 1
    SIZE = len(maze)
    #list to store the solution matrix
    solution = [[0]*SIZE for _ in range(SIZE)]

    def solve(r, c):
        nonlocal count
        # FINDING THE END OF THE MAZE
        if c == SIZE-1 and r == SIZE - 1:
            solution[r][c] = 1
            answer_dict[count] = {"r": r, "c": c}
            return True
        if r >=0 and c >=0 and r < SIZE and c < SIZE and solution[r][c] == 0 and maze[r][c] == 0:
            solution[r][c] = 1
            answer_dict[count] = {"r": r, "c": c}
            count += 1
            # Try going down
            if solve(r+1, c):
                return True
            # Try going right
            if solve(r, c+1):
                return True
            # Try going up
            if solve(r-1, c):
                return True
            # Try going left
            if solve(r, c-1):
                return True
            # Try backtracking
            solution[r][c] = 0
            return False
        return 0

    for i in range(SIZE):
        if not solve(i, 0):
            pass
        solve(i, 0)
    return answer_dict

find_path(maze)
def find_路径(迷宫):
答案
计数=1
尺寸=透镜(迷宫)
#列表以存储解决方案矩阵
解决方案=[[0]*范围内的uu的大小(大小)]
def解算(r,c):
非局部计数
#寻找迷宫的尽头
如果c==尺寸-1且r==尺寸-1:
溶液[r][c]=1
答案[计数]={“r”:r,“c”:c}
返回真值
如果r>=0且c>=0且r