雙色漢諾塔

2021-08-14 21:08:09 字數 538 閱讀 7842

先說一說普通漢諾塔吧,思路就是先將前n-1個方塊借助c放到b上,最後乙個直接放在c上,下一步是將這n-1個方塊借助a放在c上,至此完成任務。

**:

#include 

//第乙個塔為初始塔,中間的塔為借用塔,最後乙個塔為目標塔

int i=1;//記錄步數

void move(int n,char

from,char to) //將編號為n的盤子由from移動到to

void hanoi(int n,char

from,char denpend_on,char to)//將n個盤子由初始塔移動到目標塔(利用借用塔)

}void main()

再說一下雙色漢諾塔吧,就是有n個方塊,每乙個相鄰的方塊不同色,但只有1和0的區別,起初我認為還得加不少判定什麼的,結果我看了別人的**發現了一件事,雙色漢諾塔的**和我上面的**是一致的,一時沒反應過來,後來一想,我認為應該是移動方塊的方法是按順序移動的,並不會出現重色的情況,所以情況和單色漢諾塔是同樣的。

**源自:

雙色漢諾塔

分析 設盤子原來在a柱上,目標為b c柱。顯然與單色漢諾塔問題相同為典型的遞迴問題。將最後的盤子移動的目標步驟為 1 除最後兩個盤子外,將所有的盤子移動到c 2 將最後的兩個盤子移動到b 3 再將c上所有的盤子移動到a 4 最後將b上的乙個盤子移動c。易得移動出最後兩個盤子以外,可以將大小相同顏色不...

雙色漢諾塔問題

雙色漢諾塔問題 圓盤最初是混合顏色的從小到大排好的,現在要求根據其顏色分開到兩個柱子上分別從小到大排好。三色漢諾塔問題可與此類似,分別是排到三個柱子上。與漢諾塔問題類似,稍作一點改動,假設柱子的編號為abc,共有n個圓盤 n為偶數 1.將最上面的n 1個圓盤從a移動到b上面 2.將底部那個圓盤從a移...

9410 雙色漢諾塔

time limit 1000ms second memory limit 32m 問題描述 設a b c是3 個塔座。開始時,在塔座a上有一疊共n個圓盤,這些圓盤自下而上,由大到小地疊在一起。各圓盤從小到大編號為1,2,n,奇數號圓盤著紅色,偶數號 圓盤著藍色,如圖所示。現要求將塔座a 上的這一疊...