欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C語言實現(xiàn)漢諾塔【圖文講解】-創(chuàng)新互聯(lián)

在這里插入圖片描述

成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、阜寧網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為阜寧等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。本期介紹🍖

主要介紹:漢諾塔是什么,漢諾塔的規(guī)律,如何用C語言來實現(xiàn)漢諾塔👀。


目錄
  • 什么是漢諾塔
  • 如何用C語言實現(xiàn)漢諾塔

什么是漢諾塔

??漢諾塔(Tower of Hanoi),又稱河內(nèi)塔。源自印度古老傳說的一個游戲,大梵天創(chuàng)造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。

??若每次移動需要1s的時間,那么請問婆羅門需要多久才能把這64片黃金圓盤從一根石柱上移動到另一個石柱上?
在這里插入圖片描述
??若只有1個圓盤時,需要移動1次;若有2個圓盤時,需要移動3次;若有3個圓盤時,需要移動7次……不難看出,漢諾塔步數(shù)的數(shù)學(xué)規(guī)律為2的n次方減1(n為柱子上的圓盤個數(shù))。所以若有64個圓盤那將會移動2^64-1次(即:18,446,744,073,709,551,615?次),若每次移動需要1s時間,則需要將近5849億年的時間才能夠做到。可見大梵天有多恨婆羅門,這絕對是在坑人啊!!!


如何用C語言實現(xiàn)漢諾塔

??現(xiàn)有三個柱子A、B、C,其中有n個圓盤在A柱上,最終要實現(xiàn)把這n個圓盤從A柱借助B柱移動到C柱上。實現(xiàn)實現(xiàn)思路:先將n-1個圓盤從A柱移動到B柱上,然后將A柱上最后一個圓盤移動到C柱上,最后再把B柱上的n-1個圓盤移動到C柱上。如下圖所示:

在這里插入圖片描述

當(dāng)n=1時:
1.將A柱上最后一個圓盤移動到C柱上(A →C)

當(dāng)n=2時:
1.將1個圓盤從A柱移動到B柱上,重復(fù)n=1時的步驟,只不過是將那1個圓盤(從A借助于B移動到C)改為(從A借助于C移動到B)
2.將A柱上最后一個圓盤移動到C柱上(A →C)
3.將B柱上的1個圓盤移動到C柱上。重復(fù)n=1時的步驟,只不過是將那個圓盤(從A借助于B移動到C)改為(從B借助于A移動到C)

當(dāng)n=3時:
1.將2個圓盤從A柱移動到B柱上。重復(fù)n=2時的步驟,只不過是將那2個圓盤(從A借助于B移動到C)改為(從A借助于C移動到B)
2.將A柱上最后一個圓盤移動到C柱上(A →C)
3.將B柱上的2個圓盤移動到C柱上。重復(fù)n=2時的步驟,只不過是將那2個圓盤(從A借助于B移動到C)改為(從B借助于A移動到C)

當(dāng)n=4時:
1.將3個圓盤從A柱移動到B柱上。重復(fù)n=3時的步驟,只不過是將那3個圓盤(從A借助于B移動到C)改為(從A借助于C移動到B)
2.將A柱上最后一個圓盤移動到C柱上(A →C)
3.將B柱上的3個圓盤移動到C柱上。重復(fù)n=3時的步驟,只不過是將那3個圓盤(從A借助于B移動到C)改為(從B借助于A移動到C)

以此類推,當(dāng)漢諾塔上的圓盤數(shù)為n個時該如何移動,只需要按照上面的規(guī)律一直往上遞歸,最終是可以達到目的的。程序如下:

#includevoid move(char A, char C, int n)
{printf("把第%d個圓盤從%c--->%c\n", n, A, C);
}

void HanoiTower(char A, char B, char C, int n)
{if (n == 1)
	{move(A, C, n);
	}
	else
	{//將n-1個圓盤從A柱借助于C柱移動到B柱上
		HanoiTower(A, C, B, n - 1);
		//將A柱子最后一個圓盤移動到C柱上
		move(A, C, n);
		//將n-1個圓盤從B柱借助于A柱移動到C柱上
		HanoiTower(B, A, C, n - 1);
	}
}

int main()
{int n = 0;
	printf("輸入A柱子上的圓盤個數(shù):");
	scanf("%d", &n);
	//將n個圓盤從A柱借助于B柱移動到C柱上
	HanoiTower('A', 'B', 'C', n);
	return 0;
}

在這里插入圖片描述
??若想知道一共移動了多少次圓盤,只需要在move()函數(shù)中加一個全局變量來統(tǒng)計個數(shù)就行。


在這里插入圖片描述

這份博客👍如果對你有幫助,給博主一個免費的點贊以示鼓勵歡迎各位🔎點贊👍評論收藏??,謝謝!!!
如果有什么疑問或不同的見解,歡迎評論區(qū)留言歐👀。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁名稱:C語言實現(xiàn)漢諾塔【圖文講解】-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://www.chinadenli.net/article42/docphc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作軟件開發(fā)品牌網(wǎng)站建設(shè)手機網(wǎng)站建設(shè)服務(wù)器托管定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司