zoukankan      html  css  js  c++  java
  • 汉诺塔算法

    首先介绍下汉诺塔:

    汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着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);
            }
        }
    }
  • 相关阅读:
    WEB浏览器与服务器通讯过程
    lua及luci学习
    让apache2不开机启动,管理Ubuntu的开机启动项
    在linux中如何调试C语言程序
    如何去除configure的默认选择-g O2
    C语言使用SQLite3数据库
    Linux下的C程序如何调用系统命令,并获取系统的输出信息到C程序中
    Opencv step by step
    Opencv step by step
    Opencv step by step
  • 原文地址:https://www.cnblogs.com/xiaoxueyong/p/5307860.html
Copyright © 2011-2022 走看看