国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

一道python走迷宮算法題

2020-02-22 22:56:18
字體:
來源:轉載
供稿:網友

前幾天逛博客時看到了這樣一道問題,感覺比較有趣,就自己思考了下方案順便用python實現了一下。題目如下:

用一個二維數組表示一個簡單的迷宮,用0表示通路,用1表示阻斷,老鼠在每個點上可以移動相鄰的東南西北四個點,設計一個算法,模擬老鼠走迷宮,找到從入口到出口的一條路徑。

如圖所示:

先說下我的思路吧:

1、首先用一個列表source存儲迷宮圖,一個列表route_stack存儲路線圖,一個列表route_history存儲走過的點,起點(0,0),終點(4,4)。

2、老鼠在每個點都有上下左右四種方案可選,需要定義這些方案的執行方法。

3、最后做一個循環,如果當前點不是(4,4)的話就依次執行上下左右四種方法,但是有些限制,比如嘗試走過的點不會再嘗試走,(0,x)點無法再執行向上的方法等等。

貼一下代碼:

# _*_ coding:utf-8 _*_  route_stack = [[0,0]] route_history = [[0,0]] source=[[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]] def up(location):   #橫坐標為0,無法再向上走   if location[1] == 0:     return False   else:     new_location = [location[0],location[1]-1]     #已經嘗試過的點不會嘗試第二次     if new_location in route_history:       return False     #碰到墻不走     elif source[new_location[0]][new_location[1]] == 1:       return False     else:       route_stack.append(new_location)       route_history.append(new_location)       return True  def down(location):   if location[1] == 4:     return False   else:     new_location = [location[0],location[1]+1]     if new_location in route_history:       return False     elif source[new_location[0]][new_location[1]] == 1:       return False     else:       route_stack.append(new_location)       route_history.append(new_location)       return True  def left(location):   if location[0] == 0:     return False   else:     new_location = [location[0]-1,location[1]]     if new_location in route_history:       return False     elif source[new_location[0]][new_location[1]] == 1:       return False     else:       route_stack.append(new_location)       route_history.append(new_location)       return True  def right(location):   if location[0] == 4:     return False   else:     new_location = [location[0]+1,location[1]]     if new_location in route_history:       return False     elif source[new_location[0]][new_location[1]] == 1:       return False     else:       route_stack.append(new_location)       route_history.append(new_location)       return True lo = [0,0] while route_stack[-1] != [4,4]:   if up(lo):     lo = route_stack[-1]     continue   if down(lo):     lo = route_stack[-1]     continue   if left(lo):     lo = route_stack[-1]     continue   if right(lo):     lo = route_stack[-1]     continue   route_stack.pop()   lo = route_stack[-1] print route_stack             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舟山市| 滨州市| 青龙| 安图县| 镇沅| 清镇市| 桐柏县| 沙田区| 忻州市| 四子王旗| 呼伦贝尔市| 永福县| 凤冈县| 重庆市| 万荣县| 罗平县| 武汉市| 临朐县| 卓尼县| 广水市| 珲春市| 苍山县| 呼伦贝尔市| 赫章县| 霍山县| 东城区| 柳河县| 松溪县| 华安县| 东乌珠穆沁旗| 当涂县| 龙泉市| 汪清县| 通河县| 连云港市| 井研县| 丽水市| 丽水市| 浙江省| 丽水市| 尚志市|