有一個梵塔,塔內有三個座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);
}
}
運行結果: