输入格式:
正整数n。
输出格式:
搬盘子过程,每行一次搬动。
输入样例:
3
输出样例:
A->C
A->B
C->B
A->C
B->A
B->C
A->C
代码如下:
#include <stdio.h>
#include <stdlib.h>
//Hanoi
void Hanoi(int n, char A, char B, char C);
int main()
{
//设立盘子个数
int n = 0;
//输入盘子个数
scanf("%d",&n);
//递归函数
Hanoi(n,'A','B','C');//传入ABC三个柱子 A:起始位置 B:经过位置 C:最终位置
return 0;
}
//move
void move(char x, char y) {//x:起始位置 y:终止位置
printf("%c->%c\n",x, y);
}
//Hanoi
void Hanoi(int n, char A, char B, char C) {
//处理一个盘子
if(n == 1) {
move(A, C);
}
//处理n-1个盘子
else {
Hanoi(n - 1, A, C, B);//第一步将n-1个盘子从A经过C移到B
move(A, C);//第二步将剩余盘子从A移到C
Hanoi(n - 1, B, A, C);//第三步将n-1个盘子从B经过A移到C
}
}