最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一道python走迷宮算法題

 更新時(shí)間:2018年01月22日 10:44:44   作者:sinly100  
這篇文章主要為大家詳細(xì)介紹了一道python走迷宮算法題,用一個(gè)二維數(shù)組表示一個(gè)簡單的迷宮,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

用一個(gè)二維數(shù)組表示一個(gè)簡單的迷宮,用0表示通路,用1表示阻斷,老鼠在每個(gè)點(diǎn)上可以移動(dòng)相鄰的東南西北四個(gè)點(diǎn),設(shè)計(jì)一個(gè)算法,模擬老鼠走迷宮,找到從入口到出口的一條路徑。

如圖所示:

先說下我的思路吧:

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

2、老鼠在每個(gè)點(diǎn)都有上下左右四種方案可選,需要定義這些方案的執(zhí)行方法。

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

貼一下代碼:

# _*_ 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): 
  #橫坐標(biāo)為0,無法再向上走 
  if location[1] == 0: 
    return False 
  else: 
    new_location = [location[0],location[1]-1] 
    #已經(jīng)嘗試過的點(diǎn)不會(huì)嘗試第二次 
    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 

執(zhí)行結(jié)果如下:


題目出處有另一種解題思路,但是我覺得有點(diǎn)煩,自己的這個(gè)比較好理解點(diǎn),實(shí)現(xiàn)起來也比較方便。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python讀取文件夾中圖片的圖片名并寫入excel表格

    python讀取文件夾中圖片的圖片名并寫入excel表格

    這篇文章介紹了使用python讀取文件夾中圖片的圖片名并寫入excel表格的方法。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • PyQt轉(zhuǎn)換路徑中的斜杠(斜杠(/)與反斜杠(\)轉(zhuǎn)換)

    PyQt轉(zhuǎn)換路徑中的斜杠(斜杠(/)與反斜杠(\)轉(zhuǎn)換)

    本文主要介紹了PyQt轉(zhuǎn)換路徑中的斜杠(斜杠(/)與反斜杠(\)轉(zhuǎn)換),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • python中使用%與.format格式化文本方法解析

    python中使用%與.format格式化文本方法解析

    這篇文章主要介紹了python中使用%與.format格式化文本方法解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • Python調(diào)用DeepSeek?API的案例詳細(xì)教程

    Python調(diào)用DeepSeek?API的案例詳細(xì)教程

    這篇文章主要為大家詳細(xì)介紹了以?Python?為例的調(diào)用?DeepSeek?API?的小白入門級(jí)詳細(xì)教程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-02-02
  • Python?設(shè)計(jì)模式創(chuàng)建型單例模式

    Python?設(shè)計(jì)模式創(chuàng)建型單例模式

    這篇文章主要介紹了Python?設(shè)計(jì)模式創(chuàng)建型單例模式,即Singleton,單例是一種設(shè)計(jì)模式,應(yīng)用該模式的類只會(huì)生成一個(gè)實(shí)例,下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-02-02
  • Python 棧實(shí)現(xiàn)的幾種方式及優(yōu)劣詳解

    Python 棧實(shí)現(xiàn)的幾種方式及優(yōu)劣詳解

    這篇文章主要為大家介紹了Python 棧實(shí)現(xiàn)的幾種方式及優(yōu)劣詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • python中g(shù)event庫的用法詳情

    python中g(shù)event庫的用法詳情

    這篇文章主要介紹了python中g(shù)event庫的用法詳情,Greenlet全部運(yùn)行在主程序操作系統(tǒng)的過程中,但是它們是協(xié)作調(diào)度的,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值
    2022-07-07
  • python使用django調(diào)用deepseek api搭建ai網(wǎng)站

    python使用django調(diào)用deepseek api搭建ai網(wǎng)站

    DeepSeek是一家人工智能公司,致力于通過創(chuàng)新的技術(shù)和算法,推動(dòng)人工智能領(lǐng)域的發(fā)展,本文給大家介紹了python使用django調(diào)用deepseek api搭建ai網(wǎng)站,文中有相關(guān)的代碼示例供大家參考,感興趣的小伙伴跟著小編一起來看看吧
    2025-02-02
  • 詳解Python的文件處理

    詳解Python的文件處理

    這篇文章主要為大家介紹了Python的文件處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • python和php學(xué)習(xí)哪個(gè)更有發(fā)展

    python和php學(xué)習(xí)哪個(gè)更有發(fā)展

    在本篇內(nèi)容里小編給大家分析了關(guān)于python和php學(xué)習(xí)哪個(gè)更有發(fā)展相關(guān)論點(diǎn),有興趣的朋友們參考下。
    2020-06-06

最新評(píng)論

连江县| 班戈县| 阿巴嘎旗| 平安县| 合肥市| 通许县| 田东县| 布尔津县| 扶余县| 包头市| 杭州市| 来安县| 罗源县| 繁峙县| 五原县| 永昌县| 剑阁县| 兴国县| 涞源县| 巍山| 武清区| 永胜县| 南阳市| 平定县| 眉山市| 巢湖市| 澳门| 龙川县| 微山县| 南投市| 会宁县| 彭州市| 沁阳市| 海晏县| 龙井市| 广汉市| 保德县| 文成县| 旬阳县| 丰宁| 龙泉市|