国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 和龙市| 中牟县| 颍上县| 安义县| 江阴市| 汉中市| 江都市| 噶尔县| 长葛市| 方山县| 汨罗市| 合肥市| 西和县| 买车| 资阳市| 新乡县| 绥棱县| 青神县| 霸州市| 贵州省| 印江| 筠连县| 泰州市| 开平市| 淮南市| 通榆县| 靖江市| 杭州市| 贵阳市| 绿春县| 嘉禾县| 玉龙| 剑川县| 伽师县| 东港市| 深泽县| 浑源县| 泰宁县| 松潘县| 灵丘县| 赣榆县|