codeup26973 汉诺塔问题
时空限制 1000ms/128MB
题目描述
有三根针A,B,C。A针上有n个盘子,盘子大小不等,大的在下,小的在上,如下图所示。
要求把这n个盘子从A针移到C针上,在移动过程中可以借助B针,每次只允许移动一个盘子,且在移动过程中在三根针上都保持大盘在下,小盘在上。
输入
有多组测试数据,每组输入数据占一行,输入n(1<n<=12)
输出
有多组测试数据,每组输入数据占一行,输入n(1<n<=12)
样例输入
1
3
样例输出
A-->C
A-->C
A-->B
C-->B
A-->C
B-->A
B-->C
A-->C
代码
#include<iostream>
#include<cstdio>
using namespace std;
void hanoi(int n,char a,char b,char c){
if (n==1) printf("%c-->%c\n",a,c);
else {
hanoi(n-1,a,c,b);
printf("%c-->%c\n",a,c);
hanoi(n-1,b,a,c);
}
}
int main(){
int n;
while (scanf("%d",&n)!=EOF) hanoi(n,'A','B','C');
return 0;
}