漢諾塔

漢諾塔:漢諾塔(又稱河內(nèi)塔)問(wèn)題是源于印度一個(gè)古老傳說(shuō)的益智玩具。大梵天創(chuàng)造世界的時(shí)候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤(pán)。大梵天命令婆羅門(mén)把圓盤(pán)從下面開(kāi)始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤(pán)上不能放大圓盤(pán),在三根柱子之間一次只能移動(dòng)一個(gè)圓盤(pán)

目標(biāo):將A上的圓盤(pán)移動(dòng)到C

  1. 思路
    從圓盤(pán)較少然后依次增加找規(guī)律:數(shù)字代表圓盤(pán)大小和位置
    <1> 當(dāng)A只有一個(gè)圓盤(pán)時(shí)(1),不用想直接A -> C
    <2> 當(dāng)A只有兩個(gè)圓盤(pán)時(shí)(1/2),要借助B完成。先 A -> B,然后就可以把最大一個(gè)從A -> C
    先不著急B -> C. 分析一下此時(shí)C有最大的圓盤(pán),那么任何圓盤(pán)都可以直接放到C上,此時(shí)C可以認(rèn)為是空的。B上有一個(gè)圓盤(pán),如果把B看做A,A看做B,就回到了<1>那種情況
    <3> 當(dāng)A只有三個(gè)圓盤(pán)時(shí)(1/2/3),先不要著急移動(dòng)。想要把A上的圓盤(pán)全部移動(dòng)到C上,必定需要把A最底部的最大的圓盤(pán)移動(dòng)到C.將1/2兩個(gè)圓盤(pán)看做一個(gè)整體,則可以直接按照<2>操作了,超級(jí)偽代碼如下:
A(1/2) -> B
A(3) -> C
B(1/2) -> C
執(zhí)行<2>的步驟
  1. 代碼實(shí)現(xiàn)
# n代表圓盤(pán)的數(shù)量,a,b,c代表柱子
def move(n, a, b, c):
    if n == 1:
        print("從 %s 移動(dòng)一個(gè)圓盤(pán)到 %s" % (a, c))
    else:
        # 將圓盤(pán)數(shù)-1(除去最大的圓盤(pán))借助c移動(dòng)到b
        move(n-1, a, c, b)
        # 將a上最大圓盤(pán)一定到c
        print("從 %s 移動(dòng)一個(gè)圓盤(pán)到 %s" % (a, c))
        # 將a看做b,b看做a,重復(fù)執(zhí)行
        move(n-1, b, a, c)


move(3, "A", "B", "c")
編輯于2018-11-24
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 漢諾塔問(wèn)題 漢諾塔(又稱河內(nèi)塔)問(wèn)題是源于印度一個(gè)古老傳說(shuō)的益智玩具。梵天創(chuàng)造世界的時(shí)候做了三根柱子,在一根柱子上...
    萬(wàn)里凪閱讀 2,078評(píng)論 2 1
  • 前置文章:遞歸算法:www.itdecent.cn/p/703069f3ba3f . 漢諾塔問(wèn)題是來(lái)源于印度傳...
    郎小凱閱讀 869評(píng)論 0 1
  • 原文鏈接(轉(zhuǎn)載請(qǐng)注明出處)漢諾塔的圖解遞歸算法 起源 漢諾塔(又稱河內(nèi)塔)問(wèn)題是源于印度一個(gè)古老傳說(shuō)的益智玩具。大...
    Dmego閱讀 1,672評(píng)論 0 0
  • 漢諾塔:漢諾塔(又稱河內(nèi)塔)問(wèn)題是源于印度一個(gè)古老傳說(shuō)的益智玩具。大梵天創(chuàng)造世界的時(shí)候做了三根金剛石柱子,在一根柱...
    lazydecoder閱讀 1,672評(píng)論 0 7
  • 前言 相信學(xué)過(guò)《數(shù)據(jù)結(jié)構(gòu)與算法》這門(mén)課程的同學(xué)都有聽(tīng)過(guò)漢諾塔問(wèn)題,但是可能在大學(xué)的時(shí)候沒(méi)有鉆研過(guò),或者在學(xué)的時(shí)候就...
    鄭土強(qiáng)ztq閱讀 3,208評(píng)論 2 3

友情鏈接更多精彩內(nèi)容