汉诺塔问题

ゝ一世哀愁。 2022-03-15 15:48 323阅读 0赞

汉诺塔问题是经典的递归问题,它的递归类型是:求解问题的方法是递归的。

解题思路:

  1. 首先将n-1个盘子从X借助Z移动到Y。
  2. 将第n个盘子从X移动到Z。
  3. 再将1中的n-1个盘子从Y借助X移动到Z。

    //汉诺塔问题

    include

    include

    using namespace std;

    void move(char x, char z)
    {

    1. printf("%c->%c\n",x,z);

    }

    void hanoi(int n, char x, char y, char z)
    {

    1. if (n == 1)
    2. move(x,z);
    3. else {
    4. hanoi(n - 1 , x, z, y);
    5. move(x,z);
    6. hanoi(n - 1, y, x, z );
    7. }

    }

    int main()
    {

    1. int n;
    2. cout << "请输入盘子的数量:" << endl;
    3. cin >> n;
    4. cout << "移动过程如下:" << endl;
    5. hanoi(n,'A','B','C');
    6. cout << "总共移动次数为" << pow(2, n) - 1<<"次." << endl;
    7. system("pause");
    8. return 0;

    }

总结:盘子移动的次数为(2^n)-1次。

发表评论

表情:
评论列表 (有 0 条评论,323人围观)

还没有评论,来说两句吧...

相关阅读

    相关 问题

    1.汉诺塔问题:如果将n个盘子(由小到大)从a通过b,搬到c,搬运过程中不能出现小盘子在大盘子下面的情况。 分析:这个一个递归问题。只要将n-1个盘子从a通过c(没有中间点肯

    相关 问题

    汉诺塔 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵

    相关 问题

    问题描述: 相传在[古印度][Link 1]圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺

    相关 问题

    汉诺塔问题是经典的递归问题,它的递归类型是:求解问题的方法是递归的。 解题思路: 1. 首先将n-1个盘子从X借助Z移动到Y。 2. 将第n个盘子从X移动到Z。 3.

    相关 问题

    汉诺塔(Tower of Hanoi)源于印度传说中,大梵天创造世界时造了三根金钢石柱子,其中一根柱子自底向上叠着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新