题解 | 汉诺塔问题

汉诺塔问题

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

import java.util.*;


public class Solution {
  	//这道题我也不太懂,反正是套了个n=2,n=3的样例进去,就很容易理清了,但是n大了之后就感觉这种递归分治的方法好像缺少了什么东西一样。
    public void Hanoi(List<String>ans, int n, String left, String mid, String right){
        if(n==0) return;
        Hanoi(ans, n-1, left, right, mid);//把n-1个盘子从left借助right搬到mid上去。
        ans.add("move from "+left+" to "+right);//把第n个盘子从left搬到right上。
        Hanoi(ans, n-1, mid, left, right);//把n-1个牌子从mid借助left搬到right上
    }
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return string字符串ArrayList
     */    
    public ArrayList<String> getSolution (int n) {
        List<String> ans = new ArrayList<>();
        Hanoi(ans, n, "left", "mid", "right");
        return (ArrayList<String>)ans;
    }
}

全部评论

相关推荐

09-28 22:01
已编辑
广西科技大学 IT技术支持
合适才能收到offe...:找桌面运维?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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