题解 | #汉诺塔问题#

汉诺塔问题

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

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return string字符串vector
     */
    vector<string> res;
    vector<string> getSolution(int n) {
        f(n, "left", "mid", "right");
        return res;
    }
    void f(int n, string x, string y, string z){
        if(n == 0) return;
        f(n - 1, x, z, y);
        res.push_back("move from " + x + " to " + z);
        f(n - 1, y, x, z);
    }
};


三个参数写法
void hanoi(int n, char a, char b){
  char help = char(198 - a - b); // 辅助塔help 除了起点和终点之外的一个塔
  if(n == 1){
    cout << "disk" << n << ":" << a << "->" << b << endl;
  }
  else{
    hanoi(n - 1, a, help);
    cout << "disk" << n << ":" << a << "->" << b << endl;
	hanoi(n - 1, help, b);
  }
}
四个参数写法
void hanoi(int n, char a, char b, char help) // 从起点a 到终点 b 辅助塔help
{
    if(n == 1){
    cout << "disk" << n << ":" << a << "->" << b << endl;
  	}
	else{
	hanoi(n - 1, a, help, b); // 辅助塔为b 从a移动到help
	cout << "disk" << n << ":" << a << "->" << b << endl;
	hanoi(n - 1, help, b, a); // 辅助塔为a 从help移动到b
	}
}

全部评论

相关推荐

昨天 15:12
门头沟学院 运营
点赞 评论 收藏
分享
下北澤大天使:你是我见过最美的牛客女孩😍
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务