古代有一个梵塔,塔内有三个座 A、B、C,A 座上有 64 个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这 64 个盘子从 A 座移到 B 座,但每次只能允许移动一个盘子,并且在移动过程中,3 个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用 B 座,要求打印移动的步骤。如果只有一个盘子,则不需要利用 B 座,直接将盘子从 A 移动到 C。
现在有 n 个圆盘从上往下从小到大叠在第一根柱子上,要把这些圆盘全部移动到第三根柱子要怎么移动呢?请找出需要步骤数最少的方案。
输入格式
第一行1正整数N,范围在[1,10]。
输出格式
每行1个数和2个字符:x y z。表示第x个盘子从y座移动大z座。
输入/输出例子1
输入:
3
输出:
1 A C
2 A B
1 C B
3 A C
1 B A
2 B C
1 A C
#include<bits/stdc++.h>
using namespace std;
void Hanoi(int n,char A,char B,char C)
{
if(n==1)
{
cout<<n<<" "<<A<<" "<<C<<endl;
}
else
{
Hanoi(n-1,A,C,B);
cout<<n<<" "<<A<<" "<<C<< endl;
Hanoi(n-1,B,A,C);
}
}
int main()
{
int n;
cin >> n;
Hanoi(n,'A','B','C');
return 0;
}