走迷宮
阿新 • • 發佈:2018-07-21
添加 退回 odi 最短 沒有 迷宮 utf-8 == 恢復
#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==_y:#判斷是否到了目的地
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()
走迷宮