'commit'
This commit is contained in:
28
GESP/Mkx/Hanoi.cpp
Normal file
28
GESP/Mkx/Hanoi.cpp
Normal file
@@ -0,0 +1,28 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user