b = [0, 1]
a = []
import random
for i in range(10):
a.append([])
for j in range(10):
a[i].append(random.choice(b))
# print(a)
maze = [[1, 0, 0, 1, 1, 0, 1, 1, 0, 1],
[1, 0,0, 1, 0, 1, 0, 0, 0, 1],
[1, 1, 0, 0, 1, 0, 1, 0, 0, 1],
[1, 1, 1, 0, 0, 0, 1, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 1, 1, 0, 1, 0, 0, 1],
[1, 0, 0, 1, 0, 0, 0, 1, 1, 1],
[1, 1, 1, 1, 0, 1, 0, 0, 0, 1],
[1, 1, 0, 1, 0, 0, 1, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
dirs = [
lambda x, y: (x+1, y),
lambda x, y: (x-1, y),
lambda x, y: (x, y+1),
lambda x, y: (x, y-1),
]
def search(point, current_distance, stack, queen_flag, point_distance_map):
"""搜索函数"""
x, y = point
cost = current_distance
for dir in dirs:
next_node = dir(x, y)
if maze[next_node[0]][next_node[1]] != 0 or next_node in queen_flag:
continue
stack.append(next_node)
queen_flag.add(next_node)
point_distance_map[next_node] = cost + 1
def math_path(x1, y1, x2, y2):
stack = []
point_distance_map = {(x1, y1): 0}
stack.append((x1, y1))
queen_flag = set()
for point in stack:
if point[0] == x2 and point[1] == y2:
print(point_distance_map)
return print(point_distance_map[point])
current_distance = point_distance_map[point]
search(point, current_distance, stack, queen_flag, point_distance_map)
else:
print(-1)
math_path(1, 1, 4, 4)
迷宫问题代码
最新推荐文章于 2024-10-18 00:00:00 发布