题解 | #汉诺塔问题#

汉诺塔问题

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

import java.util.*;

public class Solution {
    static ArrayList<String> list=new ArrayList<String>();//存放结果
    public ArrayList<String> getSolution(int n) {
        // write code here
        hannuo(n,"left","right","mid");//递归汉诺函数
        return list;
       }
   
    public void hannuo(int n,String a,String b,String c){//a,表示左,b表示右,c表示中
        if(n==1){
            list.add(String.format("move from %s to %s",a,b));//n为1时,直接从左边挪到右边
        }else{
            hannuo(n-1,a,c,b);//先将n-1层挪到中间
            hannuo(1,a,b,c);//再将右边剩余的1层直接挪到右边
            hannuo(n-1,c,b,a);//最后将中间n-1层挪到右边
        }
    }
}

全部评论

相关推荐

勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务