题目描述
N 个圆盘按照半径从小到大依次迭放在一个柱子上(小的在上面,1 号柱子)。
现在要求将 N 个盘子从 1 号柱移到 3 号柱上,提供 2 号柱子作为临时柱,每次只允许移一个盘子,整个过程不允许大盘在小盘上面。
输入格式
一个整数 N,代表有 N 个圆盘。
输出格式
若干行,即移动的最少步骤的操作过程。
样例数据
输入样例 #1 | 输出样例 #1 |
---|---|
3 | A To C A To B C To B A To C B To A B To C A To C |
样例分析
如上所述。
数据范围
100% 的数据: 1≤n≤10
解题:
#include<bits/stdc++.h>
using namespace std;
int n;
void tower(int n,char a,char b,char c){
if(n==1){
printf("%c To %c\n",a,c);
return;
}
tower(n-1,a,c,b);
printf("%c To %c\n",a,c);
tower(n-1,b,a,c);
}
int main(){
scanf("%d",&n);
tower(n,'A','B','C');
return 0;
}