Java Hanoi塔问题简单分治算法实现
2015-06-26 12:47
627 查看
Java Hanoi塔问题简单分治算法实现
问题描述
输入:圆盘数n, 3根系杆——起始杆A、过渡杆B、目标杆C输出:从起始杆到目标杆过程的最少步骤
算法思想
分治算法思想如果A上只有一个盘,直接移动到C
如果A上有n个盘,将n-1个盘移动到B,再将A上的一个盘移动到C,随后再利用A将B上的n-1个盘移动到C(与原问题一直)
算法实现
public class Hanoi { public static void hanoi(int number,char A,char B,char C){ if(number==1){ System.out.println(A+"->"+C); return; } hanoi(number-1,A,C,B); hanoi(1,A,B,C); hanoi(number-1,B,A,C); } public static void main(String [] args){ hanoi(3,'A','B','C'); } }
算法时间
n=1,T(n) = 1n>1,T(n) = 2T(n-1) + 1
所以有:
T(n)=2n−1T(n) = 2^n-1
演示结果
A->CA->B
C->B
A->C
B->A
B->C
A->C
相关文章推荐
- JAVA分布式事务原理及应用(转)
- java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layou
- 简单java web应用程序搭建与部署
- Spring与Quartz的整合实现定时任务调度
- 回复《我要阻止做java开发的男朋友去创业型公司工作吗?》园友问题
- java学习之旅21--for语句
- Java有两种线程分别是用户线程(UserThread)和守护线程(DaemonThread)
- Java反射机制和对象序列化
- Java反射机制和对象序列化 分类: Java 2015-06-26 12:08 21人阅读 评论(0) 收藏
- java快速排序法
- spring+ibatis实现读写分离(分享我的开源项目)
- Java基础语法易犯错误(2)
- 《深入浅出 Java Concurrency》
- JavaBean
- Java中的Scanner类详解
- Java基础语法易犯错误(1)
- Java工程导入Eclipse
- 学java7中的IO新类Path
- myeclipse 控制台 中文乱码
- Struts2 XML配置详解