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

首頁 > 編程 > Python > 正文

一道python走迷宮算法題

2020-01-04 16:03:23
字體:
來源:轉載
供稿:網友

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

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

如圖所示:

python走迷宮算法題,python走迷宮算法,python走迷宮

先說下我的思路吧:

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 

執行結果如下:

python走迷宮算法題,python走迷宮算法,python走迷宮

題目出處有另一種解題思路,但是我覺得有點煩,自己的這個比較好理解點,實現起來也比較方便。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台中市| 海兴县| 浮山县| 桃江县| 缙云县| 昌图县| 大港区| 辉南县| 大连市| 湖州市| 淮阳县| 剑川县| 浪卡子县| 基隆市| 岑溪市| 呼图壁县| 江源县| 定边县| 安义县| 乌兰县| 公安县| 易门县| 健康| 菏泽市| 大新县| 石棉县| 电白县| 萨嘎县| 东城区| 乌拉特前旗| 南乐县| 仲巴县| 项城市| 长岭县| 景洪市| 成安县| 南汇区| 泸溪县| 边坝县| 紫云| 香港 |