汉诺塔问题c++源代码
时间: 2023-09-01 12:07:23 浏览: 62
以下是汉诺塔问题的 C++ 源代码:
```cpp
#include <iostream>
using namespace std;
void move(int n, char a, char b, char c)
{
if (n == 1) {
cout << "Move disk 1 from " << a << " to " << c << endl;
return;
}
move(n - 1, a, c, b);
cout << "Move disk " << n << " from " << a << " to " << c << endl;
move(n - 1, b, a, c);
}
int main()
{
int n;
cout << "Enter the number of disks: ";
cin >> n;
move(n, 'A', 'B', 'C');
return 0;
}
```
在这个程序中,`move()` 函数使用递归的方式来解决汉诺塔问题。当只有一张盘子时,直接将它从起始位置移动到目标位置即可。否则,将前 n-1 个盘子从起始位置经过目标位置移到辅助位置,然后将第 n 张盘子从起始位置移到目标位置,最后将前 n-1 个盘子从辅助位置经过起始位置移到目标位置。
相关问题
汉诺塔问题c++代码
下面是汉诺塔问题的递归解法的 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` 函数进行求解。
汉诺塔问题发伪代码c++
汉诺塔问题是一道经典的递归问题,它是指有三根杆子A、B、C。A杆上有若干个盘子,盘子大小不等,大的在下,小的在上。要将这些盘子全部移动到C杆上,移动过程中要遵守以下规则:
1. 每次只能移动一个盘子;
2. 盘子可以放在A、B、C中任意一个杆上;
3. 任何时刻都不能将一个大的盘子放到一个小的盘子上面。
以下是汉诺塔问题的伪代码C++实现:
```
void hanoi(int n, char a, char b, char c) {
if (n == 1) {
cout << "Move disk 1 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);
}
}
```
其中,n表示盘子的数量,a、b、c表示三个杆子的名称。递归函数hanoi首先判断n是否等于1,如果是则直接将最后一个盘子从a移动到c,否则需要先将前n-1个盘子从a通过c移动到b,再将最后一个盘子从a移动到c,最后将前n-1个盘子从b通过a移动到c。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)