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

    一、程序设计思想:

    从左到右 A  B  C 柱 大盘子在下, 小盘子在上, 借助B柱将所有盘子从A柱移动到C柱, 期间只有一个原则: 大盘子只能在小盘子的下面.有3个盘子, 大中小号, 越小的越在上面, 从上面给盘子按顺序编号peg1 、peg2 、peg3,peg1上放置需要移动的盘,peg2用作移动辅助盘,peg3当做移动后的盘。

    设置两个函数Hanoi(int n,String peg1,String peg2,String peg3)递归进行操作;move(String c1,String c2)用来输出移动步数。

    二、程序流程图:

     

    三、源程序:

    package homework2;

     

    import java.util.Scanner;

     

    public class Hanoi {

             static int count=0;

     

             public static void main(String[] args) {

                       // TODO Auto-generated method stub

                       int n;

                       System.out.println("输入你想移动的盘子数目:");

                       Scanner in=new Scanner(System.in);

                       n=in.nextInt();

                       System.out.println("移动"+n+"个盘子需要的步数为:");

                       hanoi(n,"peg1","peg2","peg3");

                       System.out.println("总共需要移动"+count+"步");

     

             }

             public static void hanoi(int n,String peg1,String peg2,String peg3){

                       //将peg 1借助peg2,移动到peg3

                       if(n==1) {

                                move(peg1,peg3);

                                count++;

                       }

                       else {

                                hanoi(n-1,peg1,peg3,peg2);

                                move(peg1,peg3);

                                hanoi(n-1,peg2,peg1,peg3);

                                count=count+1;

                       }

             }

             public static void move(String c1,String c2) {

                       System.out.println(c1+"-->"+c2);

             }

     

    }

    四、实现结果截图:

     

  • 相关阅读:
    线程基础1
    组合数学的卡特兰数 TOJ 3551: Game of Connections
    2017ACM/ICPC广西邀请赛-重现赛(感谢广西大学)
    Codeforces Round #430 (Div. 2)
    线代之高斯消元
    牛客网Wannafly模拟赛
    TOJ3039: 材质贴图
    AtCoder Grand Contest 019
    TOJ 3974: Region n条直线m个圆最多将圆分为几个区域
    AIM Tech Round 4 (Div. 2)
  • 原文地址:https://www.cnblogs.com/somedayLi/p/7664422.html
Copyright © 2011-2022 走看看