有三根柱子分别设为A,B,C,初始状态下,有若干个大小不同的盘子按照从小到大的顺序叠放在A柱上,每次只能移动1个盘子,且在任何时候,大盘子都不能在小的盘子上面,目标是把所有的盘子从起始柱(A)移动到C柱上,且用最少的移动次数。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
printf("Move disk 1 from %c to %c\n", A,C);
return;
}
else {
hanoi(n - 1, A, C, B);
printf("Move disk %d from %c to %c\n", n, A, C);
hanoi(n - 1, B, A, C);
}
}
int main() {
int n;
printf("请输入圆盘的数量: ");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
return 0;
}