python迷宫代码深度优先_day21 Python 实现的深度优先搜索实现迷宫算法

# Python 实现的深度优先搜索实现迷宫算法

lookup_path = []

history_path = []

# maze = [[0, 0, 1, 0, 1], [1, 0, 0, 0, 1], [0, 0, 1, 1, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0]]

maze = [[0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 1, 0, 1, 0], [1, 1, 1, 0, 0], [0, 1, 0, 0, 1], [0, 1, 0, 0, 0]]

# 打印二维数组

for k in maze:

for v in k:

print(v, end=" ")

print("")

print("\n")

def up(location):

# 到达了数组顶端

if location[0] == 0:

return False

else:

new_location = [location[0] - 1, location[1]]

# 走过的路不再走

if new_location in history_path:

return False

# 遇到墙不走

elif maze[new_location[0]][new_location[1]] == 1:

return False

else:

lookup_path.append(new_location)

history_path.append(new_location)

return True

def down(location):

# 遇到迷宫最下方的时候,不能继续往下走

if location[0] == len(maze) - 1: # 6行5列的二维数组行数,从0开始计算所以是6-1=5 行

return False

else:

new_location = [location[0] + 1, location[1]]

# 走过的路不再走

if new_location in history_path:

return False

# 遇到墙不走

elif maze[new_location[0]][new_location[1]] == 1:

return False

else:

history_path.append(new_location)

lookup_path.append(new_location)

return True

def left(location):

# 遇到迷宫最左边,不能继续往左走

if location[1] == 0:

return False

else:

new_location = [location[0], location[1] - 1]

# 走过的路不再走

if new_location in history_path:

return False

# 遇到墙不走

elif maze[new_location[0]][new_location[1]] == 1:

return False

else:

history_path.append(new_location)

lookup_path.append(new_location)

return True

def right(location):

# 遇到迷宫最右边,不能继续向右移动

if location[1] == len(maze[0]) - 1: # 6行5列的二维数组列数,从0开始计算所以是5-1=4行

return False

else:

new_location = [location[0], location[1] + 1]

# 走过的路不再走

if new_location in history_path:

return False

# 遇到墙不走

elif maze[new_location[0]][new_location[1]] == 1:

return False

else:

history_path.append(new_location)

lookup_path.append(new_location)

return True

start = [0, 0]

end = [5, 4]

print("start: %s --> end: %s\n" % (start, end))

lookup_path.append(start)

history_path.append(start)

while lookup_path[-1] != end:

now = lookup_path[-1]

# print("retry:%s, Lookup path:%s" % (now, route_stack))

if up(now) or down(now) or left(now) or right(now):

continue

lookup_path.pop()

print("final path: ", lookup_path)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值