問題及**:
/*
*檔名稱:cpp.cbp
*作 者:宋晨
*完成日期:2023年9月13日
*版 本 號:v1.0
* *問題描述:有乙個印度的古老傳說:在世界中心貝拿勒斯(在印度北部)的聖廟裡,一塊黃銅板上插著三根
寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64
片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金片:
一次只移動一片,不管在哪根針上,小片必須在大片上面。僧侶們預言,當所有的金片都從梵天
穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將
同歸於盡。
可以演算法出,當盤子數為n 個時,需要移動的次數是f(n)=2 n −1 。n=64時,假如每秒鐘移一次,
共需要18446744073709551615秒。乙個平年365天有31536000秒,閏年366天有31622400秒,
平均每年31556952秒,移完這些金片需要5845.54億年以上,而地球存在至今不過45億年,太陽系
的預期壽命據說也就是數百億年。真的過了5845.54億年,不說太陽系和銀河系,至少地球上的一
切生命,連同梵塔、廟宇等,都早已經灰飛煙滅。據此,2 n從數量級上看大得不得了。用遞迴算
下,體驗盤子數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)
}
執行結果:
◆4個盤子
◆8個盤子
◆16個盤子
◆24個盤子
目測僧人們搬16個盤子內心就該崩潰了。。。
知識點總結:
運用了遞迴演算法。遞迴演算法使得程式不過於冗長,就是有點繞
學習心得:
熟能生巧,熟了就不會覺得繞了。
第2周 專案三 漢諾塔
all rights reservrd.版本號 v1.0 問題描述 漢諾塔 有乙個印度的古老傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶...
第2周專案3 漢諾塔程式
檔名稱 作 者 馮圓 版 本 號 v1.0 用遞迴演算法求解漢諾塔問題,其複雜度可以求得為o 2n 體驗盤子數disccount為4 8 16 20 24時在時間耗費上的差異 1 漢諾塔程式 include define disccount 4 long move int,char,char,cha...
第二週專案3(2) 漢諾塔
問題描述 all right reserved.檔名稱 hannuota.cpp writer 肖博文 date 2016年9月8日 版本 v1.0.1 問題描述 體驗複雜度為o 2 n 的函式的運算時間 輸入描述 輸入盤子的數目 程式輸出 輸出移動盤子的次數以及函式執行的時間 程式 include...