溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python解漢諾塔游戲的方法

發(fā)布時間:2020-07-10 11:02:23 來源:億速云 閱讀:245 作者:清晨 欄目:開發(fā)技術(shù)

這篇文章主要介紹python解漢諾塔游戲的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、問題定義

百度百科定義:漢諾塔(又稱河內(nèi)塔)問題是源于印度一個古老傳說的益智玩具。據(jù)說大梵天創(chuàng)造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照從小到大順序摞著64片黃金圓盤。大梵天命令婆羅門借助其中一根柱子,把64片黃金圓盤重新擺放到第三個根柱子上。并且規(guī)定,在小黃金圓盤上不能放大的黃金圓盤,在三根柱子之間一次只能移動一個圓盤。

例如,如果黃金圓盤只有3片,則為了滿足游戲規(guī)則,那么必須按照如下圖所示的8個步驟完成:

python解漢諾塔游戲的方法

二、代碼實現(xiàn)

# 將n個盤子借助y柱從x柱移動到z柱
def hanoi(n, x, y, z):

  count = 0
  if n == 1: # 遞歸出口
    print(x, ' --> ', z)
    return 1
  else:
    # 將前n - 1個盤子借助z柱從x柱移動到y(tǒng)柱上
    count += hanoi(n - 1, x, z, y) # 遞歸調(diào)用

    # 將最底下的1個盤子從x柱移動到z柱上
    count += hanoi(1, x, y, z)

    # 將n - 1個盤子借助x柱從y柱移動到z柱上
    count += hanoi(n - 1, y, x, z) # 遞歸調(diào)用

    return count


def main():

  hanoi_level = input("請輸入漢諾塔層數(shù):")
  print("總共移動次數(shù)為%d" % hanoi(int(hanoi_level), 'X', 'Y', 'Z'))


if __name__ == '__main__':
  main()

當黃金圓盤為4層時,代碼的輸出結(jié)果為:

請輸入漢諾塔層數(shù):4
X --> Y
X --> Z
Y --> Z
X --> Y
Z --> X
Z --> Y
X --> Y
X --> Z
Y --> Z
Y --> X
Z --> X
Y --> Z
X --> Y
X --> Z
Y --> Z
總共移動次數(shù)為15

以上是python解漢諾塔游戲的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI