29 lines
788 B
C++
29 lines
788 B
C++
#include <bits/stdc++.h>
|
|
using namespace std;
|
|
|
|
// 定义移动盘子的函数
|
|
void move(int n, char from, char to) {
|
|
printf("Move disk %d from %c to %c\n", n, from, to);
|
|
}
|
|
|
|
// 定义汉诺塔递归函数
|
|
void hanoi(int n, char a, char b, char c) {
|
|
if (n == 1) {
|
|
// 如果只有一个盘子,直接从起始柱子移动到目标柱子
|
|
move(1, a, c);
|
|
return;
|
|
}
|
|
// 将前 n-1 个盘子从起始柱子 A 借助目标柱子 C 移动到中间柱子 B
|
|
hanoi(n - 1, a, c, b);
|
|
// 将第 n 个盘子从起始柱子 A 移动到目标柱子 C
|
|
move(n, a, c);
|
|
// 将 n-1 个盘子从中间柱子 B 借助起始柱子 A 移动到目标柱子 C
|
|
hanoi(n - 1, b, a, c);
|
|
}
|
|
int main() {
|
|
int n;
|
|
cin >> n;
|
|
hanoi(n, 'A', 'B', 'C');
|
|
return 0;
|
|
}
|