题解 | #汉诺塔问题#

汉诺塔问题

http://www.nowcoder.com/practice/7d6cab7d435048c4b05251bf44e9f185

经典递归入门题,只需要三步即可。

  1. 将left的n-1个盘子通过right移到mid上
  2. 将1个盘子从left移到right上
  3. 将mid上n-1个盘子通过left移到right上
class Solution {
public:
    vector<string> res;
    vector<string> getSolution(int n) {
        // write code here
        string l="left", m = "mid", r = "right";
        hanoi(l, m, r, n);
        return res;
    }
    // 1. 将left的n-1个盘子通过right移到mid上
    // 2. 将1个盘子从left移到right上
    // 3. 将mid上n-1个盘子通过left移到right上
    void hanoi(string &left, string &mid, string &right, int n) {
        if(n < 1) return ;
        hanoi(left, right, mid, n-1);
        move(left, right);
        hanoi(mid, left, right, n-1);
    }
    void move(string &x, string &y) {
        res.push_back("move from " + x + " to " + y);
    }
};
全部评论

相关推荐

粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务