python走迷宫

#coding=utf-8
arr = []
lu = []
def zou(m,y,x,_y,_x):
#到达新点,将当前所在点设置为墙
m[y][x] = 0
#将当前所在点添加进路线
lu.append([x,y])
if y==_y and x==_x:#判断是否到了目的地
arr.append(list(lu))#将路线添加进路线组
if y > 0: #往上探索
if m[y - 1][x] != 0:
zou(m, y - 1, x,_y,_x)
if y < len(m)-1:#往下探索
if m[y + 1][x] != 0:
zou(m, y + 1, x,_y,_x)
if x > 0: #往左探索
if m[y][x-1]!=0:
zou(m,y, x-1,_y,_x)
if x < len(m[y]) - 1:#往右探索
if m[y][x+1]!=0:
zou(m,y, x+1,_y,_x)
#确认该路线无法到达目的地,将当前所在点恢复为路
m[y][x] = 1
#退回上一步
lu.pop()

migong = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1, 0, 1, 1, 1],
[0, 1, 0, 1, 0, 1, 0, 0, 1, 0],
[0, 1, 0, 1, 1, 1, 0, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 1, 0, 1, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

def main():
zou(migong,1,0,8,9)
if len(arr)>0:
cheng = 99999999999
duan = []
for i in range(len(arr)):
if cheng > len(arr[i]):
duan = arr[i]
cheng = len(arr[i])
print '第', i + 1, '条路:', arr[i]
print '最短路径为:', duan
else:
print '没有可到达目的地的路径!'
main()
原文地址:https://www.cnblogs.com/ningzhilin/p/9345824.html