第二週專案3 體驗複雜度 漢諾塔

2021-07-22 10:45:16 字數 1565 閱讀 5588

問題及**:

/*

*檔名稱:test.cpp

*完成日期:2023年9月5日

*版本號:v1.0

**問題描述:有乙個印度的古老傳說:在世界中心貝拿勒斯(在印度北部)的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,

在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金片:一次只移動

一片,不管在哪根針上,小片必須在大片上面。僧侶們預言,當所有的金片都從梵天穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消滅,而

梵塔、廟宇和眾生也都將同歸於盡。可以演算法出,當盤子數為n 個時,需要移動的次數是f(n)=2 n ?1 。n=64時,假如每秒鐘移一次,共需要184467440737

09551615秒。乙個平年365天有31536000秒,閏年366天有31622400秒,平均每年31556952秒,移完這些金片需要5845.54億年以上,而地球存在至今不過45

億年,太陽系的預期壽命據說也就是數百億年。真的過了5845.54億年,不說太陽系和銀河系,至少地球上的一切生命,連同梵塔、廟宇等,都早已經灰飛煙

體驗盤子數disccount為4、8、16、20、24時在時間耗費上的差異,你能忍受多大的disccount

*輸入描述:需要移動的盤子個數

*程式輸出:盤子的移動次數

*/#include #define disccount 4

long move(int, char, char,char);

int main()

long move(int n, char a, char b,char c)

}

執行結果:

(1)當盤子的個數是4時

(2)當盤子的個數是8時

(3)當盤子的個數是16時

(4)當盤子的個數是20時

(5)當盤子的個數是24時

知識點總結:

運用遞迴演算法使複雜難算的漢諾塔問題變得簡單易懂,遞迴演算法同時也會使以後的複雜問題簡單化。同時也用到了指數級演算法的複雜度的知識點,漢諾塔問題可以看做是指數級的演算法,複雜度是指數級的演算法,隨著n的增大,所得結果增大的幅度極大。

學習心得:

使用遞迴演算法可以使複雜的問題簡單化,減少了大量的運算**,簡單易懂;指數級的演算法複雜度太大,我們在程式設計過程中應盡量避免使用這種演算法。

第二週專案3 體驗複雜度 漢諾塔

檔名稱 zxl.cpp 完成日期 2016年9月6日 問題描述 有乙個印度的古老傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的...

第二週 專案3 體驗複雜度 漢諾塔

問題描述及 02.煙台大學計控學院 03.作 者 張雯婧 04.完成日期 2015年9月5日 05.問題描述 有乙個印度的古老傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的...

第二週專案3 體驗複雜度 漢諾塔

問題描述及 煙台大學計控學院 作 者 朱建豪 完成日期 2016年9月8日 問題描述 有乙個印度的古老傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總...