public class HNT {
public static void main(String[] args) {
HNT a1 = new HNT();
a1.lToR(10); //给汉诺塔a1左边放10阶的层数,把左边的10阶移动至右边。
}
private boolean pHToM(int num,String a,String b,String c) { //打印移动数据,从a移动到c.
if (num == 1) { //只移动一层的情况,return false表示,如果num == 1则不再继续打印num<1的情况
System.out.printf("%s to %s\n",a,c);
return false;
}
else if (num == 2) { //只移动两层的情况,return false表示,如果num == 2则不再继续打印num<2的情况
System.out.printf("%s to %s\n",a,b);
System.out.printf("%s to %s\n",a,c);
System.out.printf("%s to %s\n",b,c);
return false;
}
else { //
return true; //移动大于两层的情况,return true表示,如果num>2则继续循环到num<=2为止
}
}
public void lToR(int num) { //把num层的汉诺塔从左移动至右
if(pHToM(num,"left","mid","right")) {
lToM(num - 1);
lToR(1);
mToR(num - 1);
}
}
public void lToM(int num) { //把num层的汉诺塔从左移动至中
if(pHToM(num,"left","right","mid")) {
lToR(num - 1);
lToM(1);
rToM(num - 1);
}
}
public void mToL(int num) { //把num层的汉诺塔从中移动至左
if(pHToM(num,"mid","right","left")) {
mToR(num - 1);
mToL(1);
rToL(num - 1);
}
}
public void mToR(int num) { //把num层的汉诺塔从中移动至右
if(pHToM(num,"mid","left","right")) {
mToL(num - 1);
mToR(1);
lToR(num - 1);
}
}
public void rToL(int num) { //把num层的汉诺塔从右移动至左
if(pHToM(num,"right","mid","left")) {
rToM(num - 1);
rToL(1);
mToL(num - 1);
}
}
public void rToM(int num) { //把num层的汉诺塔从右移动至中
if(pHToM(num,"right","left","mid")){
rToL(num - 1);
rToM(1);
lToM(num - 1);
}
}
}

最新文章

  1. 绿色通道(codevs 3342)
  2. 安装redis,执行make test时遇到You need tcl 8.5 or newer in order to run the Redis test
  3. [问题2014A03] 解答
  4. R语言学习笔记:小试R环境
  5. ZOJ 3820 Building Fire Stations 求中点+树的直径+BFS
  6. 将PHP作为Shell脚本语言使用
  7. 【转】10分钟搭建NDK的Android开发环境
  8. Entity Framework with MySQL
  9. 辛星跟您玩转vim第一节之vim的下载与三种模式
  10. 启动、停止、重启 MySQL 常见的操作方法:
  11. 【转】传递给Appium服务器以开启相应安卓Automation会话的Capabilities的几点说明
  12. tomcat源代码Catalina
  13. php中各种定义变量的方法
  14. Linux搭建FTP服务器
  15. 剑指Offer-对称的二叉树
  16. 设计模式 --&gt; MVC,MVP 和 MVVM 的图示
  17. Android为TV端助力 电影栏目移动到底部或者顶部时抖动动画
  18. Debian Security Advisory DSA-4419-1 twig security update
  19. mybatis中mapper接口的参数设置几种方法
  20. C#获取日期的星期名称

热门文章

  1. python_面向对象——继承
  2. MongoDB同步机制
  3. csrf简单明了( 转发)
  4. python 传参
  5. 使用@ConfigurationProperties注解 提示 “Spring Boot Configuration Annotation Processor not found in classpath ”
  6. 从运行时的工作空间获取EMF文件(IFILE)
  7. C# List&lt;T&gt; 集合使用
  8. java中vector中add,addElement区别
  9. MySQL 一次非常有意思的SQL优化经历:从30248.271s到0.001s
  10. MySQLSyntaxErrorException: Table &#39;taotao.tbuser&#39; doesn&#39;t exist