汉诺塔
内容:
设有n个大小不等的中空圆盘,按照从小到大的顺序迭套在立柱A上(最上面是1号盘子),另有两根立柱B和C。现要求把全部圆盘从A柱(源柱)移到C柱(目标柱),移动过程中可借助B柱(中间柱)。移动时有如下的要求:
①
一次只许移动一个盘;
②
不允许把大盘放在小盘上边;
③
可使用任意一根立柱暂存圆盘
输入说明:
一行一个整数n<=10
输出说明:
若干行,例如1:A->C,代表1号盘子由A移动到C。(->箭头有-和>表示)
输入样例:
3
输出样例:
1:A->C 2:A->B 1:C->B 3:A->C 1:B->A 2:B->C 1:A->C #include<iostream> using namespace std; void f(int n,char a,char b,char c) { if(n==1) cout<<"1:"<<a<<"->"<<c<<endl; else {f(n-1,a,c,b); cout<<n<<":"<<a<<"->"<<c<<endl; f(n-1,b,a,c);} } int main() { int n;char a='A',b='B',c='C'; cin>>n; f(n,a,b,c); return 0; }