国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

有關(guān)漢諾塔的算法問題——C++遞歸

2019-11-06 07:06:52
字體:
供稿:網(wǎng)友

漢諾塔問題發(fā)源于古老的梵天寺之塔儀式,傳說當(dāng)世界誕生的時候,有一座摞了64個黃金碟子的鉆石塔(記為A塔)。碟子按從大到小的次序自底向上地摞在塔上。除此之外還有兩個鉆石塔(記為B和C塔),從世界誕生之日開始,梵天寺的僧侶們就通過塔C將碟子從A塔搬到B塔,但每次只能搬一個碟子,并且任何時候都不能大的碟子在上小碟子在下。根據(jù)傳說,當(dāng)僧侶完成任務(wù)是就是世界毀滅之時。

這個問題可以用遞歸來解決。假設(shè)碟子數(shù)是n個,為了將最大的第n個從A搬到B,需要先將剩下的n-1個碟子搬到C上,我們需要解決的問題就是如何將塔C上的碟子搬到塔B上。此時我們可以用塔A和B,可以先不管B上已有的碟子,因為它是最大的,其他碟子都可以放在它上面。這時就可以用遞歸算法。改程序首次調(diào)用是TowersOfHanio(n,A,B,C).即將一個搬運(yùn)n個碟子的問題轉(zhuǎn)換為兩個搬動n-1個碟子的問題。

#include<iostream>enum tower{A = 'A',B = 'B',C = 'C'};void TowersOfHanoi(int n,tower X,tower y,tower z)//從塔x的頂部移動n個碟子到塔y {	if(n)	{		TowersOfHanio(n-1,x,z,y);		cout<<"move top disk from tower"<<char(x)<<"to top of tower"<<char(y)<<endl;		TowersOfHanio(n-1,z,y,x);	} } 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 大洼县| 察雅县| 本溪| 呼伦贝尔市| 穆棱市| 永新县| 中西区| 贡山| 长海县| 章丘市| 醴陵市| 平安县| 台湾省| 隆尧县| 嘉鱼县| 盐亭县| 华阴市| 思茅市| 江津市| 滁州市| 容城县| 南宁市| 徐州市| 涪陵区| 博野县| 驻马店市| 大足县| 镇远县| 双江| 和林格尔县| 洱源县| 澎湖县| 保亭| 马公市| 和平县| 新昌县| 卓尼县| 济源市| 且末县| 安达市| 九江市|