zoukankan      html  css  js  c++  java
  • (递归) 汉诺塔问题 lintcode 169

     

     

    将n个从小到大的(上到下)盘子从A移动到C,借助B。其中大的盘子不能放在小的盘子上面输出模拟过程。

    将n个盘子从A移动到C => 将n-1个盘子从A移动到B , 再将最底部的一个盘子从A移动到C,最后将B上的n-1个盘子从B移动到C

    class Solution {
    public:
        /**
         * @param n: the number of disks
         * @return: the order of moves
         */
        vector<string> res;
        vector<string> towerOfHanoi(int n) {
            // write your code here
            move(n, "A", "B", "C");
            return res;
        }
        void move(int n, string from, string buffer, string to){
            if(n==1){
                string s = "from "+ from + " to " + to ;
                res.push_back(s);
            }
                
            else{
                move(n-1, from, to, buffer);
                move(1, from, buffer, to);
                move(n-1, buffer, from, to);
            }
        }
    };
  • 相关阅读:
    js 鸭式辨型法
    javascript performence
    js继承实现
    js深入理解构造函数和原型对象
    js 变量类型
    JS 严格模式
    鼠标滚动事件
    css3-transform
    js.map error
    canvas(一) 基本线条绘制
  • 原文地址:https://www.cnblogs.com/Bella2017/p/11482561.html
Copyright © 2011-2022 走看看