package demo;
/**
* 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时
* 北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世
* 纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64
* 个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根
* 石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当盘子全数搬
* 运完毕之时,此塔将毁损,而也就是世界末日来临之时。
* @author gaoq
* @date 2015-5-13 上午10:31:28
*/
public class HeNeiZhiTa {
private static volatile int count=0;
public static void main(String[] args) {
int n = 3;
hanoi(n, 'A', 'B', 'C');
System.out.println("COUNT:"+count+"条");
}
public static void hanoi(int n,char A,char B,char C){
count++;
if(n == 1) {
System.out.println("Move sheet "+n+" from "+A+" to "+C+"");
}
else {
hanoi(n-1, A, C, B);
System.out.println("Move sheet "+n+" from "+A+" to "+C+"");
hanoi(n-1, B, A, C);
}
}
/**解法:
如果柱子标为ABC,要由A搬至C,在只有一个盘子时,就将它直接搬至C,当有两个盘
子,就将B当作辅助柱。如果盘数超过2个,将第三个以下的盘子遮起来,就很简单了,每次处
理两个盘子,也就是:A->B、A ->C、B->C这三个步骤,而被遮住的部份,其实就是进入程式
的递回处理。事实上,若有n个盘子,则移动完毕所需之次数为2^n - 1
**/
}
相关推荐
java毕业设计——基于Misty1算法的加密软件(java)的实现(源代码+论文).zip java毕业设计——基于Misty1算法的加密软件(java)的实现(源代码+论文).zip java毕业设计——基于Misty1算法的加密软件(java)的实现(源代码+...
Java算法详解——Algorithm.zipJava算法详解——Algorithm.zipJava算法详解——Algorithm.zipJava算法详解——Algorithm.zipJava算法详解——Algorithm.zipJava算法详解——Algorithm.zipJava算法详解——Algorithm....
java毕业设计——java基于蚁群算法路由选择可视化动态模拟系统的的设计与实现(论文+开题报告+翻译+外文翻译).zip java毕业设计——java基于蚁群算法路由选择可视化动态模拟系统的的设计与实现(论文+开题报告+翻译+...
数据结构与算法分析——Java语言描述
数据结构与算法分析——java语言描述 pdf
零起点学算法34——继续求多项式:方法1:输入1个正整数n
首先,我们从标题和描述出发,"java算法——玩家扑克牌"表明我们需要创建一个扑克牌游戏,其中包含玩家和扑克牌的管理。扑克牌游戏通常涉及发牌、比较牌面大小等操作,因此我们需要对扑克牌进行定义和组织。 1. **...
数据结构与算法分析——Java语言描述(第二版)是普林斯顿大学Mark Allen Weiss的经典之作,但是网上很少能找到Java描述第二版的课后习题,连作者的个人主页也明确表示不提供课后习题,只能到出版商那里去索取,这个...
二分法查找 *进行二分法查找的前提是数组已有序 *查找范围的上下界
机器学习的数学理论及其算法研究——评《机器学习的数学理论》 机器学习是指计算机通过固有的规律性信息获得新的经验和知识,从而提升计算机的智能,达到像人类一样作出决策的目的。机器学习的数学理论是研究机器...
文本比较算法Ⅰ——LD算法.doc
老鼠走迷宫,用数组跌打计算。 老鼠走迷宫,用数组跌打计算。
选择排序: 每次在“无序”队列中选择“最小值”,放在有序队列最后,并从无序队列中删除该值。