在迷宫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