zhangwch • 13天前
第一步,把 k-1 个从 A 挪到 C;
第二步,把第 k 个从 A 挪到 B;
第三步,把 k-1 个从 C 挪到 B。
#include <iostream>
using namespace std;
// 将 k 个盘子从 a 移动到 b ,其中 c 是中间杆
void work(int k, char a, char b, char c) {
if (!k) return;
// 1.先将k-1个从a到c
work(k - 1, a, c, b);
// 2.把第k个从a到b
cout << a << "->" << b << endl;
// 3.再将k-1个从c到b
work(k - 1, c, b, a);
}
int main()
{
int k;
cin >> k;
work(k, 'A', 'C', 'B');
return 0;
}
Comments: