5 solutions
-
0
#include <bits/stdc++.h> using namespace std; // 汉诺塔递归函数 // 参数说明: // n: 当前要移动的盘子数量 // from: 起始柱 // to: 目标柱 // aux: 辅助柱 void hanoi(int n, char from, char to, char aux) { if (n == 1) { // 当只剩一个盘子时,直接移动到目标柱 cout << from << "->" << n << "->" << to << endl; return; } // 1. 将上方 n-1 个盘子从起始柱移动到辅助柱(借助目标柱) hanoi(n - 1, from, aux, to); // 2. 将第 n 个盘子从起始柱移动到目标柱 cout << from << "->" << n << "->" << to << endl; // 3. 将 n-1 个盘子从辅助柱移动到目标柱(借助起始柱) hanoi(n - 1, aux, to, from); } int main() { int n; cin >> n; char a,b,c; cin >> a >> b >> c; // 调用汉诺塔函数,初始从A柱移动到C柱,B柱作为辅助 hanoi(n, a, b, c); return 0; }
Information
- ID
- 940
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 110
- Accepted
- 34
- Uploaded By