Python中逃离迷宫矩阵的最小移动次数
假设我们有一个二元矩阵,其中0表示空单元格,1表示墙。如果我们从左上角(0,0)开始,我们必须找到到达右下角所需的最小单元格数(R-1,C-1)这里R是行数,C是数字列。如果我们找不到任何答案,则返回-1。
所以,如果输入是这样的
那么输出将是8因为,我们可以选择路径-
示例
让我们看看以下实现以获得更好的理解-
def solve(matrix):
R, C = len(matrix), len(matrix[0])
q = [(0, 0, 1)] if not matrix[0][0] else []
matrix[0][0] = 1
for r, c, d in q:
if (r, c) == (R - 1, C - 1):
return d
for x, y in [(r + 1, c), (r - 1, c), (r, c + 1), (r, c - 1)]:
if 0 <= x < R and 0 <= y < C and matrix[x][y] == 0:
matrix[x][y] = 1
q.append((x, y, d + 1))
return -1
matrix = [
[0, 0, 0, 1, 0],
[0, 0, 1, 1, 0],
[0, 0, 0, 1, 1],
[1, 1, 0, 0, 0]
]
print(solve(matrix))输入
[ [0, 0, 0, 1, 0], [0, 0, 1, 1, 0], [0, 0, 0, 1, 1], [1, 1, 0, 0, 0] ]输出结果
8