Java实现汉诺塔移动,只需传一个int值(汉诺塔的阶)
2024-09-05 03:19:20
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);
}
}
}
最新文章
- 绿色通道(codevs 3342)
- 安装redis,执行make test时遇到You need tcl 8.5 or newer in order to run the Redis test
- [问题2014A03] 解答
- R语言学习笔记:小试R环境
- ZOJ 3820 Building Fire Stations 求中点+树的直径+BFS
- 将PHP作为Shell脚本语言使用
- 【转】10分钟搭建NDK的Android开发环境
- Entity Framework with MySQL
- 辛星跟您玩转vim第一节之vim的下载与三种模式
- 启动、停止、重启 MySQL 常见的操作方法:
- 【转】传递给Appium服务器以开启相应安卓Automation会话的Capabilities的几点说明
- tomcat源代码Catalina
- php中各种定义变量的方法
- Linux搭建FTP服务器
- 剑指Offer-对称的二叉树
- 设计模式 -->; MVC,MVP 和 MVVM 的图示
- Android为TV端助力 电影栏目移动到底部或者顶部时抖动动画
- Debian Security Advisory DSA-4419-1 twig security update
- mybatis中mapper接口的参数设置几种方法
- C#获取日期的星期名称
热门文章
- python_面向对象——继承
- MongoDB同步机制
- csrf简单明了( 转发)
- python 传参
- 使用@ConfigurationProperties注解 提示 “Spring Boot Configuration Annotation Processor not found in classpath ”
- 从运行时的工作空间获取EMF文件(IFILE)
- C# List<;T>; 集合使用
- java中vector中add,addElement区别
- MySQL 一次非常有意思的SQL优化经历:从30248.271s到0.001s
- MySQLSyntaxErrorException: Table &#39;taotao.tbuser&#39; doesn&#39;t exist