日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

第二周 体验复杂度--汉诺塔

發(fā)布時(shí)間:2023/12/29 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二周 体验复杂度--汉诺塔 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/**Copyright(c)2014,煙臺(tái)大學(xué)計(jì)算機(jī)與控制工程學(xué)院*All rights reserved.*文件名稱:test.cpp*作者:楊珺*完成日期:2015年9月7日*版本號(hào):v1.0*問(wèn)題描述:有一個(gè)印度的古老傳說(shuō):在世界中心貝拿勒斯(在印度北部)的圣廟里,一塊黃銅板上插著三根寶石針。印度教 的主神梵天在創(chuàng)造世界的時(shí)候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。 不論白天黑夜,總有一個(gè)僧侶在按照下面的法則移動(dòng)這些金片:一次只移動(dòng)一片,不管在哪根針上,小片必須在大片上面。 僧侶們預(yù)言,當(dāng)所有的金片都從梵天穿好的那根針上移到另外一根針上時(shí),世界就將在一聲霹靂中消滅,而梵塔、廟宇和 眾生也都將同歸于盡。 可以算法出,當(dāng)盤(pán)子數(shù)為n個(gè)時(shí),需要移動(dòng)的次數(shù)是f(n)=2^n-1 。n=64時(shí),假如每秒鐘移一次,共 需要18446744073709551615秒。一個(gè)平年365天有31536000秒,閏年366天有31622400秒,平均每年31556952秒,移完這些金 片需要5845.54億年以上,而地球存在至今不過(guò)45億年,太陽(yáng)系的預(yù)期壽命據(jù)說(shuō)也就是數(shù)百億年。真的過(guò)了5845.54億年,不 說(shuō)太陽(yáng)系和銀河系,至少地球上的一切生命,連同梵塔、廟宇等,都早已經(jīng)灰飛煙滅。據(jù)此,2^n從數(shù)量級(jí)上看大得不得了。 用遞歸算法求解漢諾塔問(wèn)題,其復(fù)雜度可以求得為O(2^n),是指數(shù)級(jí)的算法。請(qǐng)到課程主頁(yè)下載程序運(yùn)行一下, 體驗(yàn)盤(pán)子數(shù)discCount為4、8、16、20、24時(shí)在時(shí)間耗費(fèi)上的差異,你能忍受多大的discCount。 *輸入描述:需要移動(dòng)的盤(pán)子數(shù)。 *程序輸出:盤(pán)子的移動(dòng)次數(shù)。* */

用遞歸算法求解漢諾塔問(wèn)題的代碼:

#include <stdio.h> #define discCount 4//4,5,6,7,8... long move(int, char, char,char); int main() {long count;count=move(discCount,'A','B','C');printf("%d個(gè)盤(pán)子需要移動(dòng)%ld次\n", discCount, count);return 0; }long move(int n, char A, char B,char C) {long c1,c2;if(n==1)return 1;else{c1=move(n-1,A,C,B);c2=move(n-1,B,A,C);return c1+c2+1;} }

運(yùn)行結(jié)果:

當(dāng)體驗(yàn)盤(pán)子數(shù)discCount=4時(shí):

當(dāng)體驗(yàn)盤(pán)子數(shù)discCount=8時(shí):

當(dāng)體驗(yàn)盤(pán)子數(shù)discCount=16時(shí):

當(dāng)體驗(yàn)盤(pán)子數(shù)discCount=20時(shí):

當(dāng)體驗(yàn)盤(pán)子數(shù)discCount=24時(shí):

總結(jié):

???????? 通過(guò)運(yùn)行結(jié)果可以得出,當(dāng)盤(pán)子數(shù)為n,需要移動(dòng)的次數(shù)是f(n)=2^n-1。假如移動(dòng)一次需要1秒,n=4時(shí),需要15秒;n=8時(shí),需要255s;n=16時(shí),需要65535s;n=20時(shí),需要1048575s;n=24時(shí),需要16777215s……2^n從數(shù)量級(jí)上看是非常大的。

???????? 用遞歸算法求解漢諾塔問(wèn)題,其復(fù)雜度可以求得為O(2^n),是指數(shù)級(jí)的算法。隨著n的增大,結(jié)果的增長(zhǎng)速度越來(lái)越快!

?

?

總結(jié)

以上是生活随笔為你收集整理的第二周 体验复杂度--汉诺塔的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。