漢諾塔拓展訓(xùn)練5層攻略(漢諾塔6層最少步數(shù))
漢諾塔
有些公司拓展培訓(xùn)會玩這類游戲,或者小孩子也有玩的,之前我總結(jié)過發(fā)到了網(wǎng)上,現(xiàn)在重新總結(jié)并完整的整理下,供大家娛樂。學(xué)過程序開發(fā)的都知道漢諾塔當(dāng)然是用遞歸算法來解決,但遞歸算法不適合人腦。我們玩的就是簡單暴力,傻瓜式操作。
基本規(guī)則是,三根柱子之間一次只能移動一個圓盤,小圓盤上不能放大圓盤。
漢諾塔有些變種,比如柱子的個數(shù)可能3個,4個,5個,但顯然柱子越少越難,所以一般還是用3個。圓盤一個或兩個太簡單了,一般是3個或以上,圓盤移動的規(guī)則有些變種是圓盤只能移動到相鄰的柱子上,不能跨柱子移動,這個同樣也有規(guī)律,大家可以自己想解法。
為了便于通用理解,我們采用如下規(guī)則:
三個柱子,每個柱子有任意個圓盤,大圓盤不能壓在小圓盤上,一次移動一個圓盤,圓盤可以從最左邊直接移動中間的柱子,也可以直接移動到最右邊的柱子。至于最終三個如果全部移動到第三個柱子(最右邊那個)上,我們認(rèn)為成功(當(dāng)然全部移動到中間的柱子上也可以認(rèn)為成功,但我們?yōu)榱送ㄓ眯灾徽J(rèn)定全部移動到最右邊的柱子上是成功)。
第一步,我們看一下圓盤的個數(shù),按照奇左偶右的口訣進(jìn)行(左的意思是第一次向左移動最小圓盤,最小圓盤不動,任意走一步,再向左移動最小圓盤,接著再最小圓盤不動,任意走一步,如此往復(fù),如果向左移動到頭了,就直接移動到最右邊的柱子上,把柱子當(dāng)成圓圈來處理。右的意思和向左的規(guī)律一樣,只是移動方向相反)。其實做起來很簡單,但可能有些人第一次看不明白,我們拿三個圓盤的漢諾塔詳細(xì)一步一步圖解下。
如上圖,三個圓盤,奇數(shù)個,所以按口訣的話是向左移動(確定好方向后,后面操作的時候一直向左)。什么意思呢,就是最上面最小的那個圓盤,眼睛要盯緊它,第一步肯定只能動它,我們把它向左移動。問題來了,向左沒有柱子,怎么移啊,我們要把這些柱子想象成循環(huán)的圓圈,所以向左移,其實是把它移動到最右邊第三個柱子上,開始移動。
移動完最小圓盤,接下來隨便走一步,但一定不能動這個最小圓盤(也就是說最小圓盤按口訣走一次之后不能再動),但是大家發(fā)現(xiàn)了,隨便走一步且不能動最小圓盤,有且只有一步可走,我們走一步。
接下來再走最小圓盤,向左走一步(在最開始時候我們已經(jīng)根據(jù)圓盤個數(shù)奇偶性確定了移動方向,所以后面一直走這個方向)
接下來最小圓盤不動,再任意走一步(其實有且只有一步可走)
接下來最小圓盤向左走一步
最小圓盤不動,任意走一步(顯然有且只有一步)
最小圓盤向左走一步(左邊到頭了,循環(huán)移,意思就是移到最右邊)
上圖已經(jīng)顯示祝賀我們,我們成功了!
我們用了最小的步數(shù)成功移動,而且毫無壓力。
下面我們可以練習(xí)三個柱子四個圓盤(四個圓盤為偶數(shù),按口訣最小圓盤向右移動,移一下停一下),三個柱子五個圓盤(五個圓盤奇數(shù)個,按口訣最小圓盤向左移動,其實和三個圓盤規(guī)律一樣,只不過步數(shù)多)的情況,如果你很快走出來了,那么你已經(jīng)掌握了這個辦法。
回到文章開頭,如果我不想三個全移動到最右邊,只想全移動到最中間的柱子呢,顯然,把口訣改成奇右偶左就行了。至于開頭的一些變種的漢諾塔的玩法,萬變不離其宗,大家可以自己總結(jié)規(guī)律。
謝謝大家閱讀到最后。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由一點團(tuán)建發(fā)布,如需轉(zhuǎn)載請注明出處。