#include <stdio.h>
#include <stdlib.h>
void move(char no, char from, char to) {
printf("将 %d 号盘子从 %c 移动到 %c\n", no, from, to);
}
void hanoi(int n, char p1, char p2, char p3) {
if (n == 1) {//只有一层的情况
move(n, p1, p3);
return;
}
//将p3看作中间柱子,将n-1个盘子从p1移动到p2
hanoi(n - 1, p1, p3, p2);
move(n, p1, p3);
//将p1看作中间柱子,将n-1个盘子从p2移动到p3
hanoi(n - 1, p2, p1, p3);
}
int main() {
hanoi(3, 'A', 'B', 'C');
return 0;
}
12_Hanio(汉诺塔)
最新推荐文章于 2024-11-20 15:49:09 发布