美文网首页
汉罗塔解决思想

汉罗塔解决思想

作者: 墨宇暗黑 | 来源:发表于2022-02-19 11:16 被阅读0次

汉罗塔里面主要体现的是一种分治思想

首先来说一下这个问题,他是说假设有三根柱子A,B,C,A上面有count个从下往上依次从大往小排序的碟子,通过借助B柱子怎样挪移到C柱子,挪移过程中碟子不能出现大的在小的上面

对于这个问题,几个盘子很好解决,盘子多了就不好处理了,他的这个中心思想就是分治算法:

1)在每次挪移过程中都将柱子最下面的碟子和最底下这个碟子上面的看成两个部分
2)如果说A柱子只有一个碟子,那么我们直接挪移到C柱子便可以(也就是A - C)
3)如果大于一个那么我们就需要先将上面的这部分(除了最底下面的一个)挪移到B柱子(这个时候目标柱子将会切换成B,数量也会少一个,也就是next(a,c,b,count-1))
4)那这时将最低下这个柱子挪移到C柱子(也就是a - c)
5)然后再来对B柱子进行操作即可,对B柱子的操作和对A柱子的思考一致就行,那么这个算法需要使用递归在将B柱子上面的移动到C上面只需要把B柱子当成A柱子 (也就是(next(b,a,c,count-1))),A柱子当成B柱子便可以,大致就是这个思路

代码如下

public class HanLuoTaTest {
    public static void main(String[] args) {
        next('a','b','c',3);
    }
    public static void next(char a, char b, char c, int count){
        if(count == 1){
            System.out.println(a + " -> " + c);
        }else {
            next(a,c,b, count-1);
            System.out.println(a + " -> " + c);
            next(b,a,c,count-1);
        }
    }
}

相关文章

  • 汉罗塔解决思想

    汉罗塔里面主要体现的是一种分治思想 首先来说一下这个问题,他是说假设有三根柱子A,B,C,A上面有count个从下...

  • 解决汉罗塔问题

    解决思路 把A上面的圆盘看做两部分,由下往上 n 和 n-1 ;n必须大于等于2 移动 A上面的n-1 部分移动...

  • 用递归思想解决汉诺塔

  • 汉诺塔算法和背后的数据结构

    汉诺塔是有算法的。 很多问题都有解决办法,汉诺塔也不例外。如果汉诺塔的算法符合 Introduction to a...

  • 数据结构与算法-递归分治-汉诺塔思想

    折半查找算法的递归实现 思想:减少查找序列的长度,分而治之地进行关键字的查找 汉诺塔问题 汉诺塔是我们递归思想,分...

  • MITx - 6.00.1x学习笔记——递归

    最近在学习MITx - 6.00.1x,对课程中讲解的递归做了一个简单的笔记。以下是应用递归思想解决汉诺塔和斐波那...

  • 递归解决汉诺塔

    算法: 当只有一个盘子的时候,只需要从将A塔上的一个盘子移到C塔上。 当A塔上有两个盘子是,先将A塔上的1号盘子(...

  • python求解汉罗塔问题

    汉罗塔问题规则:1.每次移动一个盘子2.任何时候大盘子在下面,小盘子在上面递归算法:

  • javascript解决汉诺塔问题

    递归的课后作业:解决汉诺塔问题有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆...

  • Prolog解决汉诺塔问题

    起源 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子...

网友评论

      本文标题:汉罗塔解决思想

      本文链接:https://www.haomeiwen.com/subject/fszulrtx.html