本篇文章待维护,核心代码如下:
#include <iostream>
using namespace std;
int m = 0; //m是最初为0的全局变量,对搬动计数,统计搬动圆盘计数
// 搬动操作信息过程函数
void MoveInfo(char A, int n, char C)
{
cout << "第" << ++m << "步:" << "将编号为" << n << "的圆盘从第" << A << "个柱子上移动到第" << C << "个柱子上面" << endl;
}
// Hanoi塔递归算法
void HanoiA(int n, char A, char B,char C) // 将塔座A上的n个圆盘按规则搬动到C的上面,B做辅助塔
{
if(n == 1)
MoveInfo(A, 1, C);
else
HanoiA(n - 1, A, C, B); //将A上的编号为1到n-1的圆盘移动到B,C做辅助塔
MoveInfo(A, n, C); //将编号为n的圆盘从A移动到C
HanoiA(n - 1, B, A, C); //将B上编号为1到n - 1的圆盘移动到C,A做辅助塔
}
int main()
{
int n;
char a,b,c;
a = '1';
b = '2';
c = '3';
cout << "请输入初始化第一个柱子上面的圆盘个数:" << endl;
cin >> n;
cout << "将第一个柱子上面的圆盘全部移动到第三个柱子上面的过程如下:" << endl;
HanoiA(n, a, b, c);
// 将移动方法输出到指定文本件
return 0;
}
网友评论