当前位置 : 主页 > 网络编程 > 其它编程 >

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

来源:互联网 收集:自由互联 发布时间:2023-07-02
#Python实现的深度优先搜索实现迷宫算法lookup_path[]history_path[]#maze[[0,0,1,0,1],[1,0,0,0,1],[0,0,1,1,0] # Python 实现的深度优先搜索实现迷宫算法 lookup_path [] history_path [] # maze [[0, 0, 1, 0, 1], [1, 0, 0,
#Python实现的深度优先搜索实现迷宫算法lookup_path[]history_path[]#maze[[0,0,1,0,1],[1,0,0,0,1],[0,0,1,1,0]

# 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-15 行

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-14行

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)

【转自:建湖网站建设 http://www.1234xp.com/jianhu.html 复制请保留原URL】
上一篇:一键部署mysql5.6.txt
下一篇:没有了
网友评论