A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一,汉诺塔问题的描述
有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就可以了,依此类推,方法都是一样的

1 个回复

倒序浏览
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"); } }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马