汉诺塔问题
假设有A、B、C三个轴,有n个直径各不相同、从小到大依次编号为1,2,3……,n的圆盘按照上小下大的顺序叠放在A上。现要求将这n个圆盘移至C轴上并仍按相同顺序叠放,但圆盘叠放时必须遵循下列规则:1.每次只能移动一个圆盘,它必须位于某个轴的顶部;2.圆盘可以插在A、B、C中的任意一个轴上;3.任何时刻都不能将较小的圆盘放置在较大的圆盘上。
代码:
#include<stdio.h>
move(char A,char B)
{
printf("%c-->%c\n",A,B);
}
hanio(int n,char A,char B,char C)
{
if(n==1)
move(A,C);
else
{
hanio(n-1,A,C,B);
move(A,C);
hanio(n-1,B,A,C);
}
}
int main()
{
int n;
scanf("%d",&n);
hanio(n,'A','B','C');
return 0;
}