c++實現漢諾塔

問題描述:
   有一個梵塔,塔內有三個座A、B、C,A座上有諾幹個盤子,盤子大小不等,大的在         下,小的在上(如圖)。

        把這些個盤子從A座移到C座,中間可以借用B座但每次只能允許移動一個盤子,並且         在移動過程中,3個座上的盤子始終保持大盤在下,小盤在上。

描述簡化:把A柱上的n個盤子移動到C柱,其中可以借用B柱。


算法實現:

1.先將A上的n-1個盤子通過C移動到B

2.將A上的最後一個盤子直接移動到C

3.將B上的n-1的盤子通過A移動到C即可實現


C++代碼如下:

#include <iostream>
using namespace std;

void Hannuota(int n, char A, char B, char C);

int main()
{
    int num;
    char ch1 = 'A', ch2 = 'B', ch3 = 'C';
    cout << "Enter the number of disk: ";
    cin >> num;
    Hannuota(num, ch1, ch2, ch3);
    return 0;
}

void Hannuota(int n, char A, char B, char C)  //一共有n個盤子,通過A柱子藉助B柱子移到C柱子
{
    if(n == 1)
        cout << "將編號爲" << n << "的盤子直接從" << A << "移動到" << C << endl;
    else
    {
        Hannuota(n-1, A, C, B);
        cout << "將編號爲" << n << "的盤子直接從" << A << "移動到" << C << endl;
        Hannuota(n-1, B, A, C);
    }
}

運行結果:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章