黑马程序员技术交流社区

标题: 有没有大神理解了汉诺塔的问题的算法 [打印本页]

作者: xcvbzbvcx    时间: 2015-9-24 22:00
标题: 有没有大神理解了汉诺塔的问题的算法
一,汉诺塔问题的描述
有3根柱子,第一根上套着N个圆环,圆环由小到大,由上到下排列,既最大的圆环在最下面,最小的圆环在最上面。现在要求把这些圆环移到另一根柱子上去,排序要求跟第一根一样。规则要求,可以利用中间的那根柱子帮忙,但是不能把大圆环压到小圆环的上面。


二,理解一下这个问题
现在有3根柱子分别是A,B,C,圆环现在套在A上,现在要移到C上去。

如果有10只圆环,我只需要将上面的9只从A柱放到B柱上,而且是上小下大,这样就可以将第10只圆环从A柱放到C柱上了,再将那9只盘子通过A柱移动到C就可以了。

至于那9只盘子如何移动,我们可以这样想,我们可以用和第10只盘子相同的方法,先将上面9只通过B柱移动到C柱,然后将第9只盘子从A移动到B,再将那8只通过A从C移动到B就可以了,依此类推,方法都是一样的
作者: xcvbzbvcx    时间: 2015-9-24 22:02
public class HannoiDemo { private static void show(int n,String strFrom,String strTo) { System.out.println("把"+n+"号盘子从:"+strFrom+" 移动到:"+strTo); } private static void move(int n,String strFrom,String strTemp,String strTo) { if(n==1) { show(1,strFrom,strTo); } else { move(n-1,strFrom,strTo,strTemp); show(n,strFrom,strTo); move(n-1,strTemp,strFrom,strTo); } }  public static void main(String[] args) { move(3,"A","B","C"); } }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2