使用python實現(xiàn)三壺謎題的方法?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、
成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)
伊美免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
一、算法思想
算法分析
- 采用的算法思想是將某個時刻水壺中水的數(shù)量看作一個狀態(tài),用一個長度為3的數(shù)組表示。
- 初始狀態(tài)便為[8,0,0],再拓展他的下一結(jié)點的可能結(jié)構(gòu)。
- 若下一結(jié)點的結(jié)構(gòu)已經(jīng)被拓展過了便放棄,若沒有拓展過則加入拓展列表(open_list)中。然后遞歸上述操作。
- 直到拓展列表(open_list)為空或者找到目標(biāo)為止。
思想圖解
這里的第一個數(shù)就代表著是那個8品脫的瓶子,依次分別是8品脫,5品脫,3品脫

就如同上圖一樣,使用層次遍歷一次一次遞歸擴(kuò)展新的結(jié)點,知道找到4品脫的水或者無結(jié)點可擴(kuò)展為止(類似于廣度優(yōu)先遍歷)。
二、代碼展示
1.創(chuàng)建樹節(jié)點結(jié)構(gòu)
節(jié)點包括兩個屬性,一個屬性是數(shù)組類型的,存儲當(dāng)前三個水壺的容量狀態(tài),另一個屬性是記錄它是由哪個結(jié)點擴(kuò)展過來的,以便找到解決路徑:
class node: # 創(chuàng)建樹節(jié)點
def __init__(self, data):
self.data = data # 存儲三個壺的容量狀態(tài)
self.per = None # 存儲上一時刻三個壺的容量狀態(tài)
本文標(biāo)題:使用python實現(xiàn)三壺謎題的方法-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:
http://weahome.cn/article/dihiii.html