18938 汉诺塔问题
### 思路
1. **递归解决问题**:使用递归方法解决汉诺塔问题。
2. **递归基准**:当只有一个盘子时,直接从源杆移动到目标杆。
3. **递归步骤**:
- 将`n-1`个盘子从源杆移动到辅助杆。
- 将第`n`个盘子从源杆移动到目标杆。
- 将`n-1`个盘子���辅助杆移动到目标杆。
### 伪代码
1. 定义`hanoi`函数,参数为盘子数目`n`,源杆`src`,目标杆`dest`,辅助杆`aux`。
2. 如果`n`为1,输出移动记录`src->1->dest`。
3. 否则:
- 调用`hanoi(n-1, src, aux, dest)`。
- 输出移动记录`src->n->dest`。
- ��用`hanoi(n-1, aux, dest, src)`。
### C++代码
#include <iostream>
using namespace std;
void hanoi(int n, char src, char dest, char aux) {
if (n == 1) {
cout << src << "->1->" << dest << endl;
return;
}
hanoi(n - 1, src, aux, dest);
cout << src << "->" << n << "->" << dest << endl;
hanoi(n - 1, aux, dest, src);
}
int main() {
int n;
char src, dest, aux;
cin >> n >> src >> dest >> aux;
hanoi(n, src, dest, aux);
return 0;
}