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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

关于汉诺塔,C++代码,代码效果演算

發布時間:2024/9/27 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于汉诺塔,C++代码,代码效果演算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1.故事介紹

漢諾塔:漢諾塔(又稱河內塔)問題是源于印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。

2.由來

法國數學家愛德華·盧卡斯曾編寫過一個印度的古老傳說:在世界中心貝拿勒斯(在印度北部)的圣廟里,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有一個僧侶在按照下面的法則移動這些金片:一次只移動一片,不管在哪根針上,小片必須在大片上面。僧侶們預言,當所有的金片都從梵天穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將同歸于盡。[1]

?

不管這個傳說的可信度有多大,如果考慮一下把64片金片,由一根針上移到另一根針上,并且始終保持上小下大的順序。這需要多少次移動呢?這里需要遞歸的方法。假設有n片,移動次數是f(n).顯然f(1)=1,f(2)=3,f(3)=7,且f(k+1)=2*f(k)+1。此后不難證明f(n)=2^n-1n=64時,

?

假如每秒鐘一次,共需多長時間呢?一個平年365天有31536000秒,閏年366天有31622400秒,平均每年31556952秒,計算一下:18446744073709551615

?

這表明移完這些金片需要5845.54億年以上,而地球存在至今不過45億年,太陽系的預期壽命據說也就是數百億年。真的過了5845.54億年,不說太陽系和銀河系,至少地球上的一切生命,連同梵塔、廟宇等,都早已經灰飛煙滅。

?

3.漢諾塔的代碼

#include <iostream>

void han(int n, char A, char B, char C)
{
?static int? num = 1;
?//std::cout << "第" << num << "次";
?num++;
?if (n == 1)
?{
??std::cout <<"將盤子"? << n <<" 從 "<< A << "移動到" << C << std::endl;
??return;
?}
?else
?{
??han(n - 1, A, C, B);
??//std::cout << A << "->" << C << std::endl;
??std::cout << "將盤子" << n << " 從 " << A << "移動到" << C << std::endl;
??han(n - 1, B, A, C);
?}
}

//? f(n)=2*f(n-1)+1 //f(n)=2^n-1
//2^64- 1
void main()
{
?int n;
?std::cin >> n;
?std::cout << "n=" << n << std::endl;
?han(n, 'A', 'B', 'C');

?std::cin.get();
?std::cin.get();
}

運行結果如下:

?

面向對象的方式解決問題:

#include <iostream>class han { private:/*盤子個數*/int num;public:void hanoi(int n, char A, char B, char C){static int num = 1;num++;if (n == 1){std::cout << "將盤子" << n << " 從 " << A << "移動到" << C << std::endl;return;}else {hanoi(n - 1, A, C, B);std::cout << "將盤子" << n << " 從 " << A << "移動到" << C << std::endl;hanoi(n - 1, B, A, C);}}/*getter setter*/void setNum(int num){this->num = num;}int getNum(){return this->num;} };int main(int argc,char *argv[]) {int num;std::cout << "請輸入盤子的個數:" << std::endl;std::cin >> num;std::cout << "輸入盤子的個數是:" << num << std::endl;han hanoi;hanoi.setNum(num);hanoi.hanoi(hanoi.getNum(),'A','B','C');std::cin.get();std::cin.get(); }

運行效果:

?

4.結果推算步驟演示:

總結

以上是生活随笔為你收集整理的关于汉诺塔,C++代码,代码效果演算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91高清国产| 狠狠综合久久 | 蜜桃久久精品 | 天天舔夜夜操 | 人人射影院 | 久久精品一区二区三区四区 | 岛国精品视频 | 韩国女主播一区 | 最新日韩在线 | 小香蕉av | 99爱爱视频 | 一级美女大片 | 亚洲一区二区三区不卡视频 | 免费在线欧美 | www,99| 久久精品网 | 吻胸摸激情床激烈视频大胸 | 欧美日韩在线观看一区二区 | 极品人妻一区二区三区 | 国产精品suv一区二区三区 | 国产ts丝袜人妖系列视频 | 欧美天天爽| 国内自拍在线观看 | 中文字幕精品无 | 欧美在线免费播放 | 久久国产成人精品国产成人亚洲 | 宅男深夜视频 | 91国在线啪 | 国产色无码精品视频 | 天天弄天天操 | 色播导航| 中文字幕av一区二区三区 | 性猛交富婆╳xxx乱大交天津 | 五月天色婷婷丁香 | 成人av在线网址 | 亚洲精品久久久久久久蜜桃臀 | 成年免费视频黄网站在线观看 | 性高潮影院| 国产吞精囗交免费视频网站 | a黄色一级片 | 国产在线观看一区二区三区 | 一本色道久久综合 | 亚洲AV成人午夜无码精品久久 | 欧美人与按摩师xxxx | 四虎精品一区二区 | 日本123区 | 国产精品66 | 在线视频观看一区二区 | 777久久 | 欧美激情校园春色 | 手机看片在线观看 | 欧美人伦 | 久久综合网址 | 欧美zozo | 亚洲无吗在线观看 | 在线国产一区二区三区 | 日韩在线www | 天天干在线观看 | 国产成人亚洲精品无码h在线 | 黄色在线播放视频 | 国产黄色在线看 | 亚洲色成人网站www永久四虎 | 黄色顶级片 | 欧美破处女 | 超碰在线免费观看97 | 99热在线观看免费 | 色悠久久久| 久久综合精品国产二区无码不卡 | 国产3级| 精品人妻一区二区三区麻豆91 | 手机看片91 | 91理论片午午伦夜理片久久 | 欧美日韩福利视频 | 色女人网站 | 中文字幕有码av | 884aa四虎影成人精品一区 | av一区免费 | 中文字幕 欧美激情 | a毛片毛片av永久免费 | 国产精品午夜福利 | 国产欧美视频在线观看 | juliaannxxxxx高清 黄页网站在线播放 | v8888av| www.88av| 国产在线免费视频 | 性无码专区无码 | 91丨九色丨海角社区 | 人人看人人看 | 精品国产成人av在线免 | 日韩av网站在线播放 | 日本国产在线 | 亚洲精品无码永久在线观看 | 午夜福利视频 | 爽爽av| 熟女毛毛多熟妇人妻aⅴ在线毛片 | 艳母免费在线观看 | 亚洲综合射 | www.国产一区 | 丁香六月综合 |