【问题描述】汉诺塔是一个古典的数学问题:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。
【样例输入】3
【样例输出】please input the number of bows
A->C A->B C->B A->C B->A B->C A->C
//汉诺塔
#include<iostream>
using namespace std;
void move(int n,char x,char y,char z)//n个圆盘从x通过y移动到z
{
if(n==1)
{
cout<<x<<"->"<<z<<endl;
}
else
{
move(n-1,x,z,y);//n-1个圆盘先从x移动到y
cout<<x<<"->"<<z<<endl;
move(n-1,y,x,z);//n-1个圆盘再从y移动到z
}
}
int main()
{
int n;
cout<<"please input the number of bows:"<<endl;
cin>>n;
move(n,'A','B','C');
return 0;
}
//n个圆盘完成汉诺塔需要2的n次方-1