题目描述(Description):
汉诺塔问题:设有三个塔座,依次命名为A,B,C。有n个直径不同的圆盘,由小到大依次编号为1,2,…,n。
开始时,它们全部按递减的次序插在塔座A上。现要求按下列规则把n个圆盘按次序插放在C塔座上。
(1)每次只能移动一个圆盘;
(2)圆盘可以从任一个塔座上移到另一个塔座上;
(3)任何时刻都不能把一个较大的圆盘压在较小的圆盘上。
输入(Input):
输入n(n<=20)
输出(Output):
输出移动过程
示例输入(Sample Input):
3
示例输出(Sample Output):
A->C
A->B
C->B
A->C
B->A
B->C
A->C
示例程序:
#include <iostream>
using namespace std;
void Hanio(int n,char start,char turn,char end)
{
if (n == 1)
{
cout << start << "->" << end << endl;
}
else
{
Hanio(n-1,start,end,turn);
cout << start << "->" << end << endl;
Hanio(n-1,turn,start,end);
}
}
int main()
{
int n;
cin >> n;
Hanio(n,'A','B','C');
return 0;
}