美文网首页
C++之汉诺塔排序

C++之汉诺塔排序

作者: townof1997 | 来源:发表于2019-07-24 12:22 被阅读0次

本篇文章待维护,核心代码如下:

#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;
}

相关文章

网友评论

      本文标题:C++之汉诺塔排序

      本文链接:https://www.haomeiwen.com/subject/owfxrctx.html