博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汉诺塔算法
阅读量:4326 次
发布时间:2019-06-06

本文共 1020 字,大约阅读时间需要 3 分钟。

首先介绍下汉诺塔:

汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

 

算法思想:

主要是递归方法的使用:假设有A、B、C三根柱子,用户输入盘子的数目,开始的时候盘子全部在A上,通过B将所有的盘子移动到C上。

盘子数目为n

1、当n=1时,直接将A上的盘子移到C上:A->C;

2、当n>1时,将A上n-1个盘子通过C移动到B,然后将A最下面的盘子移动到C上,最后将B上的n-1个盘子通过A移动到C,完成。

直接上干货,代码如下:

import java.util.Scanner;public class Main {    private static int count = 0;    public static void main(String[] args) {        System.out.println("请输入盘子个数:");        Scanner scanner = new Scanner(System.in);        int n = scanner.nextInt();        move('A', 'B', 'C', n);        System.out.println("一共需步骤数:" + count);    }    private static void move(char a, char b, char c, int n) {        if (n == 1) {            System.out.println(a + "->" + c);            count++;        } else {            move(a, c, b, n - 1);            System.out.println(a + "->" + c);            count++;            move(b, a, c, n - 1);        }    }}

 

转载于:https://www.cnblogs.com/xiaoxueyong/p/5307860.html

你可能感兴趣的文章
sql语言的一大类 DML 数据的操纵语言
查看>>
VMware黑屏解决方法
查看>>
JS中各种跳转解析
查看>>
JAVA 基础 / 第八课:面向对象 / JAVA类的方法与实例方法
查看>>
Ecust OJ
查看>>
P3384 【模板】树链剖分
查看>>
Thrift源码分析(二)-- 协议和编解码
查看>>
考勤系统之计算工作小时数
查看>>
4.1 分解条件式
查看>>
Equivalent Strings
查看>>
flume handler
查看>>
收藏其他博客园主写的代码,学习加自用。先表示感谢!!!
查看>>
H5 表单标签
查看>>
su 与 su - 区别
查看>>
C语言编程-9_4 字符统计
查看>>
在webconfig中写好连接后,在程序中如何调用?
查看>>
限制用户不能删除SharePoint列表中的条目(项目)
查看>>
【Linux网络编程】使用GDB调试程序
查看>>
feign调用spring clound eureka 注册中心服务
查看>>
ZT:Linux上安装JDK,最准确
查看>>