题解 | #汉诺塔问题#

汉诺塔问题

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

import java.util.*;


public class Solution {
   
   
    public ArrayList<String> getSolution (int n) {
        // write code here
        ArrayList<String> ret = new ArrayList<>();
       
        String left ="left",mid = "mid",right="right";
        dfs(n,left,mid,right,ret);

        return ret;
    }
    //递归  :String 对应的是出发;借助:目的的
    public void dfs(int n, String left, String mid,String right,List<String> list){
        String s ;
        //直接移动
        if(n==1){
            s = "move from " +left +" to "+right;
            //将此次操作记录
            list.add(s);
            //直接返回 函数出口
            return;
        }
        //不为1,先以动n-1个,从left借助right到mid;
        dfs(n-1,left,right,mid,list);

        //然后将最大一个移动到right;
         s = "move from "+left+" to "+right;
         list.add(s);
         //最后将mid上的借助left移动到rigft上
         dfs(n-1,mid,left,right,list);
    }
}

全部评论

相关推荐

陈生6:不可以全是stm32哦,太没档次了。上次来我们学校校招的上来就要求升腾芯片什么的喵。stm32,穷小子高攀不上了喵
点赞 评论 收藏
分享
嵌入式的小白:简历关键的就是项目经历,你这密密麻麻的,我一点开就不想看了,每一条都不换行,而且每一个里面写那么多,需要精简一下,这样别人看一眼就能知道你做了啥,用了啥技术
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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