免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
Hanoi塔

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

其實算法非常簡單,當(dāng)盤子的個數(shù)為n時,移動的次數(shù)應(yīng)等于2^n – 1(有興趣的可以自己證明試試看)。后來一位美國學(xué)者發(fā)現(xiàn)一種出人意料的簡單方法,只要輪流進(jìn)行兩步操作就可以了。首先把三根柱子按順序排成品字型,把所有的圓盤按從大到小的順序放在柱子A上,根據(jù)圓盤的數(shù)量確定柱子的排放順序:若n為偶數(shù),按順時針方向依次擺放 A B C;

  若n為奇數(shù),按順時針方向依次擺放 A C B?! 。?)按順時針方向把圓盤1從現(xiàn)在的柱子移動到下一根柱子,即當(dāng)n為偶數(shù)時,若圓盤1在柱子A,則把它移動到B;若圓盤1在柱子B,則把它移動到C;若圓盤1在柱子C,則把它移動到A?! 。?)接著,把另外兩根柱子上可以移動的圓盤移動到新的柱子上。即把非空柱子上的圓盤移動到空柱子上,當(dāng)兩根柱子都非空時,移動較小的圓盤。這一步?jīng)]有明確規(guī)定移動哪個圓盤,你可能以為會有多種可能性,其實不然,可實施的行動是唯一的?! 。?)反復(fù)進(jìn)行(1)(2)操作,最后就能按規(guī)定完成漢諾塔的移動。  所以結(jié)果非常簡單,就是按照移動規(guī)則向一個方向移動金片:  如3階漢諾塔的移動:A→C,A→B,C→B,A→C,B→A,B→C,A→C

我用的是遞歸,代碼如下:

  1. #include"iostream.h"  
  2. void move(char e,char f);  
  3. void hanoi(int n,char a,char b,char c);  
  4. int main()  
  5. {  
  6.    int n;  
  7.    cout<<"請輸入圓盤的個數(shù)"<<endl;  
  8.    cin>>n;  
  9.    hanoi(n,'A','B','C');  
  10.    return 0;  
  11. }  
  12. void hanoi(int n,char a,char b,char c)  
  13. {  
  14.    if(n==1)  
  15.      move(a,c);  
  16.    else  
  17.     {  
  18.       hanoi(n-1,a,c,b);  
  19.       move(a,c);  
  20.       hanoi(n-1,b,a,c);  
  21.     }  
  22. }  
  23. void move(char e,char f)  
  24. {  
  25.    cout<<e<<"------>"<<f<<endl;  
  26. }  


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
漢諾塔問題(三柱及四柱)詳解
漢諾塔的圖解遞歸算法
C|用遞歸和非遞歸方法求解漢諾塔問題
漢諾塔
關(guān)于C語言漢諾塔問題,當(dāng)程序執(zhí)行到001、002、003步時,不知道具體是個什么步驟,求大神解惑!
java采用遞歸算法求解漢諾塔問題(具有解決問題思路詳解,具體代碼,附有運(yùn)行結(jié)果)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服