时间限制:1秒 内存限制:128M
题目描述
设有n个大小不等的中空圆盘,按照从小到大的顺序叠套在立柱A上,另有两根立柱B和C。现在要求把全部圆盘从A柱(称为源柱)移到C柱(称为目标柱),移动过程中可借助B柱(称为中间柱)。移动时有如下的要求:
一次只许移动一个盘。
任何时候、任何柱子上不允许把大盘放在小盘上边
可使用任意一根立柱暂存圆盘。
问:如何用最少步数实现n个盘子的移动?请打印出具体的移动方案
输入描述
一行一个正整数n,1<=n<=18
输出描述
输出若干行,第i行表示第i步的移动方案
样例
输入
3
输出
A->C A->B C->B A->C B->A B->C A->C
C++ 递归Code:
#include<bits/stdc++.h>
using namespace std;
int n;
void hn(int n,char a,char b,char c){
if(n>=1){
hn(n-1,a,c,b);
cout<<a<<"->"<<c<<endl;
hn(n-1,b,a,c);
}
}
int main(){
cin>>n;
hn(n,'A','B','C');
return 0;
}
别忘了点赞加关注哦!