汉诺塔问题c++代码
时间: 2023-08-06 17:05:45 浏览: 133
下面是汉诺塔问题的递归解法的 C++ 代码实现:
```c++
#include <iostream>
using namespace std;
void hanoi(int n, char a, char b, char c) {
if (n == 1) {
cout << "Move disk " << n << " from " << a << " to " << c << endl;
} else {
hanoi(n-1, a, c, b);
cout << "Move disk " << n << " from " << a << " to " << c << endl;
hanoi(n-1, b, a, c);
}
}
int main() {
int n;
cout << "Enter the number of disks: ";
cin >> n;
hanoi(n, 'A', 'B', 'C');
return 0;
}
```
其中,`hanoi` 函数用于解决汉诺塔问题,参数 `n` 表示当前需要移动的盘子数目,`a`、`b` 和 `c` 分别表示三个柱子的名称。
当只有一个盘子时,直接将它从 `a` 移动到 `c` 即可。否则,先将 `n-1` 个盘子从起始柱子 `a` 移动到辅助柱子 `b`,再将最后一个盘子从 `a` 移动到 `c`,最后将 `n-1` 个盘子从 `b` 移动到 `c`。
在 `main` 函数中,用户需要输入需要移动的盘子数,然后调用 `hanoi` 函数进行求解。
阅读全文