汉诺塔问题
来源:互联网 发布:摄影作品网站 知乎 编辑:程序博客网 时间:2024/05/29 14:32
直接上程序:如下
public class Hanoi{static int i=1;public static void main(String[] args){hanoi(5,'A','B','C');}public static void move(int n,char from,char to) //将编号为n的盘子由from移动到to{System.out.printf("第%d步:将%d号盘子%c---->%c\n",i++,n,from,to);}public static void hanoi(int n,char from,char denpend_on,char to)//将n个盘子由初始塔移动到目标塔(利用借用塔){ if (n==1) move(1,from,to);//只有一个盘子是直接将初塔上的盘子移动到目的地 else { hanoi(n-1,from,to,denpend_on);//先将初始塔的前n-1个盘子借助目的塔移动到借用塔上 move(n,from,to); //将剩下的一个盘子移动到目的塔上 hanoi(n-1,denpend_on,from,to);//最后将借用塔上的n-1个盘子移动到目的塔上}}}结果如下:
第1步:将1号盘子A---->C
第2步:将2号盘子A---->B
第3步:将1号盘子C---->B
第4步:将3号盘子A---->C
第5步:将1号盘子B---->A
第6步:将2号盘子B---->C
第7步:将1号盘子A---->C
第8步:将4号盘子A---->B
第9步:将1号盘子C---->B
第10步:将2号盘子C---->A
第11步:将1号盘子B---->A
第12步:将3号盘子C---->B
第13步:将1号盘子A---->C
第14步:将2号盘子A---->B
第15步:将1号盘子C---->B
第16步:将5号盘子A---->C
第17步:将1号盘子B---->A
第18步:将2号盘子B---->C
第19步:将1号盘子A---->C
第20步:将3号盘子B---->A
第21步:将1号盘子C---->B
第22步:将2号盘子C---->A
第23步:将1号盘子B---->A
第24步:将4号盘子B---->C
第25步:将1号盘子A---->C
第26步:将2号盘子A---->B
第27步:将1号盘子C---->B
第28步:将3号盘子A---->C
第29步:将1号盘子B---->A
第30步:将2号盘子B---->C
第31步:将1号盘子A---->C
0 0
- 汉诺塔问题 背包问题
- 递归问题,汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题.
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- Map的遍历,使用内部接口Entry
- 【LINUX系统】Debian 下安装 Apache,MySQL,PHP
- 16.排序
- brew和brew cask 转自知乎
- opencv在VS2010中的配置
- 汉诺塔问题
- 编写Makefile文件常用的三个变量
- This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
- PHP浮点数运算的问题解决
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- eclispe android导入工程出现The project was not built since its build path is incomplete. Cannot find...
- Android动画总结系列(6)——矢量图形与矢量动画
- 【CodeForces】632B - Alice, Bob, Two Teams(模拟)
- jtsl标签库使用记录一