漢諾塔


漢諾塔是計算機學教科書中常用的游戲,用來說明遞歸的魔力。該游戲有3個柱子和一組不同大小的圓盤,柱子從圓盤的中心穿過。游戲開始時,所有圓盤疊放在左側第一個柱子上,如圖 1 所示。

游戲的目標是將所有的圓盤從第一個柱子移動到第三個柱子,同時遵守以下規則:

1.除了被移動時,所有圓盤都必須放在柱子上。
2.一次只能移動一個圓盤。
3.圓盤不能放置在比它小的圓盤上面。

#include<bits/stdc++.h>
using namespace std;
//a表示a柱b表示b柱c表示c柱,n表示當前有多少個盤子
void haitan(char a,char b,char c,int n)
{
       if (n==1) //當只有一個盤子時,直接從a柱移到c柱
      {
            cout<<a<<"->"<<c<<endl;
      }
      else
      {
            haitan(a,c,b,n-1);//n-1個盤子從a柱通過c柱稱到b柱
            cout<<a<<"->"<<c<<endl;//將最后一個盤子直接從a柱移到c柱
            haitan(b,a,c,n-1);//n-1個盤子從b柱通過a柱移到c柱
      }
}
int main()
{
      int n;
      cin>>n;
      haitan('A','B','C',n);
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM