GPT答: |
7i24.cn
|
汉罗塔问题可以用递归算法来解决,以下是使用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 rod " << A << " to rod " << C << endl;
return;
}
hanoi(n-1, A, C, B);
cout << "Move disk "<< n <<" from rod "<< A <<" to rod "<< C<<endl;
hanoi(n-1,B,A,C);
}
int main() {
int n = 3; // 汉罗塔层数
hanoi(n,'A','B','C');
}
```
在上述代码中,`hanoi()`函数是递归函数,它接受四个参数:`n`表示当前要移动的盘子数目;`A`,`B`,`C`分别表示三个柱子。
当只有一个盘子时,直接将其从柱子A移动到柱子C即可。否则需要先将前n-1个盘子从柱子A移动到B上(利用了汉罗塔问题的性质),然后再将第n个盘子从A移动到C上,最后再将前n-1个盘子从B移动到C上。这样就完成了整个汉罗塔问题的求解。
运行以上程序输出结果如下:
```
Move disk 1 from rod A to rod C
Move disk 2 from rod A to rod B
Move disk 1 from rod C to rod B
Move disk 3 from rod A to rod C
Move disk 1 from rod B to rodc
Move disk 2 from rodbto roda
Move dishk11fromrodc torodb
Move dishk22fromroda torodc
Move dishk11fromrodb toroda
Move dishk33fromroda torodc
Move dishk11fromrodc torodb
Move dishk22fromrodcto roda
Move dishk11fromrodatorodc
```
|