美文网首页
汉诺塔算法

汉诺塔算法

作者: 伤她心我是万万不能 | 来源:发表于2019-05-23 21:14 被阅读0次

    1. 源代码

    C++版本:https://github.com/DeanVincent/TowerOfHanoi-algorithm

    2. 伪代码

    //要移动的塔包含的层数,目标地点
    MoveTower(floor,position){
        If(floor>1){
             //将上面n-1层的塔移动到不碍事的地方
            MoveTower(floor-1,!position);
            //将最下面一层移动到目标地点
            MoveFloor(floor,position);
            //将上面n-1层的塔移动到最下层的上面
            MoveTower(floor-1,position);
        }
        else if(floor==1){
             //将由一层组成的塔移动到目标地点
            MoveFloor(floor,position);
        }
    }
    

    3. 思路

    假如我们打算把一个总层数为n的汉诺塔从位置p1移动到位置p2上。

    • 思考:这座塔有n个部分,需要哪个部分先被固定到p2?
      需要最下面的一层先到,这个问题可以理解为一个必要问题。
    • 思考:最下层要移动并固定到p2之前,需要做好什么准备?
      需要所有在它之上的层移动到另外一个位置,就是腾地,这个可以理解为一个充分问题。
    • 思考:最下层固定好了,塔的其他部分如何被固定?
      塔的其他部分组成了一个小塔,小塔的移动与原塔的移动过程一样,知道塔只由一层组成,那么直接移动即可。
      (结束,将思路与伪代码结合帮助理解)

    还不懂的话,请联系楼主,楼主一直在线!

    相关文章

      网友评论

          本文标题:汉诺塔算法

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