26743: 遞歸--雙色Hanoi塔問題

【問題描述】

  設(shè)A牛哺、B、C是3 個塔座。開始時瓶籽,在塔座A 上有一疊共n 個圓盤,這些圓盤自下而上桑逝,由大到小地疊在一起棘劣。各圓盤從小到大編號為1,2楞遏,……茬暇,n,奇數(shù)號圓盤著藍(lán)色寡喝,偶數(shù)號圓盤著紅色糙俗,如圖所示。現(xiàn)要求將塔座A 上的這一疊圓盤移到塔座B 上预鬓,并仍按同樣順序疊置巧骚。在移動圓盤時應(yīng)遵守以下移動規(guī)則:

  規(guī)則(1):每次只能移動1 個圓盤;

  規(guī)則(2):任何時刻都不允許將較大的圓盤壓在較小的圓盤之上格二;

  規(guī)則(3):任何時刻都不允許將同色圓盤疊在一起劈彪;

  規(guī)則(4):在滿足移動規(guī)則(1)-(3)的前提下,可將圓盤移至A顶猜,B沧奴,C 中任一塔座上。 

試設(shè)計一個算法长窄,用最少的移動次數(shù)將塔座A 上的n個圓盤移到塔座B 上滔吠,并仍按同樣順序疊置。

【編程任務(wù)】

  對于給定的正整數(shù)n挠日,編程計算最優(yōu)移動方案.

其實(shí)雙色漢諾塔和漢諾塔是沒有區(qū)別的疮绷,不過漢諾塔的最優(yōu)次數(shù)的遞歸計算是很簡單的,我們也知道就是2^n-1次嚣潜,但是如何把其變化的方法表示出來則是需要一定的技巧冬骚,相信能將此題做出來后,遞歸就可以說是掌握的比較嫻熟了郑原。
先思考遞歸的終止條件唉韭,如果是n=0時候,就是什么都不用移動犯犁,直接結(jié)束遞歸即可属愤。再思考一下如果n=1時,只需要一步酸役,一個圓盤從A->B即可住诸,而兩個圓盤驾胆,則是先1 A->C,再 2 A->B,最后 1 C->B,初看上去很復(fù)雜贱呐,但其實(shí)不然丧诺,我們可以反著去研究,也是符合遞歸的思路奄薇,遞歸就是先研究最深層的n,然后通過遞推n-1,n-2的次數(shù)一直遞推至終止遞歸驳阎,得到結(jié)果。因此我們可以找到規(guī)律馁蒂,最后一次圓盤移動一定是最小的放到B的最上面呵晚,那倒數(shù)第二次圓盤移動一定是倒數(shù)第二小的放到B的最上面,以此類推沫屡。
如何打印順序呢饵隙, 那只需打印一行,n 從 a 到 b即可沮脖, 具體如何操作移動金矛,交由遞歸處理即可,具體思路流程有了勺届,如何實(shí)踐呢驶俊,n=1的時候,很明顯只需一次移動即可免姿,我們看看n=2時候废睦,也就是只有兩個圓盤的時候,是如何移動的养泡,我們是先要從1 A->C,2 A->B,要利用一個輔助盤先把1 從A移到C奈应,2 從A->B,后澜掩,再1 C->B,把輔助盤上的圓盤給放到目的地B上,n=2的時候是這樣杖挣,n=3的時候也是這樣肩榕,只不過多做了幾次操作,最后的步驟是一樣的惩妇,思路也是一樣的株汉, 需要利用輔助盤,因此 我們遞歸操作很簡單歌殃,先進(jìn)行將圓盤從 起點(diǎn)a到輔助盤c上乔妈,然后再將圓盤從輔助盤c放到目的地B上,每個圓盤都依次操作,只有最下面的圓盤是可以一步到位的氓皱,而這也無需我們考慮路召,代碼如下:

#include<iostream>
using namespace std;
void dchanoi(int n,char a,char b,char c)
{   if(n==0)
    return ;
    dchanoi(n-1,a,c,b);
    cout<<n<<a<<b<<endl;
    dchanoi(n-1,c,b,a);
}
int main()
{   int n;
    cout<<"輸入n"<<endl;
    cin>>n;
    cout<<"從a移到b"<<endl;
    dchanoi(n,'a','b','c');
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末勃刨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子股淡,更是在濱河造成了極大的恐慌身隐,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唯灵,死亡現(xiàn)場離奇詭異贾铝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)埠帕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門垢揩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搞监,你說我怎么就攤上這事水孩。” “怎么了琐驴?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵俘种,是天一觀的道長。 經(jīng)常有香客問我绝淡,道長宙刘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任牢酵,我火速辦了婚禮悬包,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘馍乙。我一直安慰自己布近,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布丝格。 她就那樣靜靜地躺著撑瞧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪显蝌。 梳的紋絲不亂的頭發(fā)上预伺,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機(jī)與錄音曼尊,去河邊找鬼酬诀。 笑死,一個胖子當(dāng)著我的面吹牛骆撇,可吹牛的內(nèi)容都是我干的瞒御。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼神郊,長吁一口氣:“原來是場噩夢啊……” “哼葵腹!你這毒婦竟也來了高每?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤践宴,失蹤者是張志新(化名)和其女友劉穎鲸匿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阻肩,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡带欢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了烤惊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乔煞。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖柒室,靈堂內(nèi)的尸體忽然破棺而出渡贾,到底是詐尸還是另有隱情,我是刑警寧澤雄右,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布空骚,位于F島的核電站,受9級特大地震影響擂仍,放射性物質(zhì)發(fā)生泄漏囤屹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一逢渔、第九天 我趴在偏房一處隱蔽的房頂上張望肋坚。 院中可真熱鬧,春花似錦肃廓、人聲如沸智厌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽峦剔。三九已至,卻和暖如春角钩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呻澜。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工递礼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人羹幸。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓脊髓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親栅受。 傳聞我的和親對象是個殘疾皇子将硝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,988評論 0 13
  • 選擇題部分 1.(),只有在發(fā)生短路事故時或者在負(fù)荷電流較大時,變流器中才會有足夠的二次電流作為繼電保護(hù)跳閘之用恭朗。...
    skystarwuwei閱讀 12,905評論 0 7
  • 前言 相信學(xué)過《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程的同學(xué)都有聽過漢諾塔問題,但是可能在大學(xué)的時候沒有鉆研過依疼,或者在學(xué)的時候就...
    鄭土強(qiáng)ztq閱讀 2,950評論 2 3
  • 原文鏈接(轉(zhuǎn)載請注明出處)漢諾塔的圖解遞歸算法 起源 漢諾塔(又稱河內(nèi)塔)問題是源于印度一個古老傳說的益智玩具痰腮。大...
    Dmego閱讀 1,546評論 0 0
  • 作者/婉君 寧寧和胡成在一間西餐廳用午餐,兩人面對面而坐律罢。在等待上餐這段時間寧寧把玩著裝檸檬水的玻璃杯膀值,時不時望向...
    綠垠閱讀 287評論 0 0