public static void main(String...args){
HanoiTower hanoi = new HanoiTower();
hanoi.move("A","B","C",new int[]{3,2,1});
}
private void move(String A, String B, String C,int[] n){
if(n.length == 0){
return ;
}else{
this.move(A, C, B, Arrays.copyOfRange(n, 1, n.length));
System.out.println(n[0]+"从"+A+"移到"+C);
this.move(B, A, C, Arrays.copyOfRange(n, 1, n.length));
}
}
解题思想:把多个圆盘看成两部分,其中上面的N-1个可以看作是一个整体,那么首先将上面的N-1个移到B柱,然后将最后一个移到C柱,然后把上面的N-1个移到C柱。
那么上面的N-1个是怎么从A柱移到B柱的呢,同样的道理把上面的N-2个看作是一个整体,从B柱移到A柱,将N-1中的最下面那个从B柱移到C柱, N-2怎么从B柱移到到A柱,可以依此类推。
如果N为偶数,那第一次应该将最小盘移到B柱,然后把第二小盘移到C柱
如果N为奇数,那第一次应该将最小盘移到C柱,然后把第二小盘移到B柱
移动次数:S1 =1。。。Sn = 2Sn-1 +1 这样可算出移到次数是2^n-1
分享到:
相关推荐
hanoi tower,hanoi kuleleri
HanoiTower.exe
自编程序,matlab实现汉诺塔步骤,demo程序为5层,参数可修改
HanoiTower_Setup2.5.exe
自己写的汉诺塔java程序。通过调用ShowHanoiFrame开启主界面及可运行程序。软件语言java,开发工具JBuilder 2005,JDK的版本是1.5。供大家学习参考。
汉诺塔问题求解中盘子的移动过程的c语言源码。
博主的上传文件大小 增加了,所以把这个游戏的完整文件发上来,分享给大家。 带音效和选择关卡,带帮助功能。
该系统是在VS平台下利用VC++语言编写,可以选择盘子数量,移动速度,显示当前步数,剩余步数,下一步移动方向,希望对你有所帮助。
这是用Java写的汉诺塔算法!!很简单的哦!大家分享学习!哈哈
用Visual C++6.0编写的汉诺塔演示程序! 采用了多线程技术! 可动态调速! 盘子最多可达32个。 画面比较精彩绚丽。 希望大家多多下载支持!! 谢谢大家!!!!
作为一个编程初学者,写下这些东西主要是为了加深自己的理解,当然如果能对各位有所帮助,是本人的荣幸。如有错误之处敬请指出。
汉诺塔游戏MFC代码
基于visual studio平台,使用c#开发语言,用类的方式编写的汉诺塔游戏。
#HanoiTower 帆布游戏 游戏逻辑和拖放功能,由 JavaScript 和 HTML5 Canvas 制作。
This is the GUI version of Hanoi problem, it is really cool
Tower of Hanoi implementation using Microsoft C#
TowerOfHanoi
TowerofHanoi.java
public static void HanoiTower(int n,char a,char b,char c){ if(n==1){ System.out.print("Move disk from" + a + " -> " + c + "\n"); }else { //将A上n-1个盘子借助C移动到B HanoiTower(n-1,a,c,...