
代码实现
cpp
#include <bits/stdc++.h>
using namespace std;
int n;
char a, b, c;
// 递归函数:把 n 个盘子从 src 杆,借助 tmp 杆,移动到 dst 杆
void dfs(int n, char src, char tmp, char dst)
{
if (n == 0) return;
// 1. 先把 n-1 个盘子从 src 移到 tmp,借助 dst
dfs(n-1, src, dst, tmp);
// 2. 把第 n 个盘子从 src 移到 dst
cout << src << "->" << n << "->" << dst << endl;
// 3. 把 n-1 个盘子从 tmp 移到 dst,借助 src
dfs(n-1, tmp, src, dst);
}
int main()
{
cin >> n >> a >> b >> c;
// 题目要求:把 a 杆的 n 个盘子移到 b 杆,借助 c 杆
dfs(n, a, c, b);
return 0;
}