• 汉诺塔的C++实现


      

    #include "pch.h"
    #include <iostream>
    //#include <cmath>
    //#include <climits>
    using namespace std;
    int hanoi(int n, char src, char medium, char dest);
    void move(char src, char dest);
    int main()
    {
        int n;
        int a;
        cin >> n;
        a = hanoi(n, 'A', 'B', 'C');
        cout << a;
        return 0;
    }
    int hanoi(int n, char src,char medium,char dest) 
    {
        static int sum=0;
        sum++;
        if (n == 1)
            move(src, dest);
        else
        {
            hanoi(n - 1, src, dest, medium);
            move(src, dest);
            hanoi(n - 1, medium, src, dest);
        }
        return sum;
    }
    void move(char src, char dest)
    {
        cout << "move " << src << " to " << dest << endl;
    }

    主要采用递归的思想,假设三个塔A,B,C。根据汉诺塔规则,需要将A转移至C,借助中间量C。对于一个n层汉诺塔,只需将n-1层移至B,将第n层移至C,此时再以A为中间量将当前B中的n-1层中的n-2层移至A,最后一层移至C,如此循环,即可将所有盘移至C,并按顺序放置。

  • 相关阅读:
    10-12
    8-10
    5.2-5.3
    四则运算 测试与封装
    第5-7章
    汉堡包
    1-5章
    实验二
    实验一
    Controller方法是如何与请求匹配上的及参数如何填充的
  • 原文地址:https://www.cnblogs.com/lightmonster/p/10274552.html
Copyright © 2020-2023  润新知