zoukankan      html  css  js  c++  java
  • 1223: 输出汉诺塔问题的盘子移动步骤(Java)

    一、题目

    http://acm.wust.edu.cn/problem.php?id=1223&soj=0

    二、代码

    import java.util.*;
    
    public class Main {
    
    	Scanner in = new Scanner(System.in);
    	int step, n;	// step移动的步数,n盘子个数
    
    	/**
    	 * 构造方法
    	 */
    	public Main() {
    		while(in.hasNext()){
    			// 每次都重置为第一步
    			step = 1;
    			// 输入盘子个数
    			n = in.nextInt();
    			// 将n个盘子从A柱子移动到C柱子
    			hanoi(n, 'A', 'B', 'C');
    			// 每组数据空一行
    			System.out.println();
    		}
    	}
    
    	/**
    	 * @param n 盘子个数
    	 * @param A 当前状态的第一根柱子
    	 * @param B 当前状态的第二根柱子
    	 * @param C 当前状态的第三根柱子
    	 */
    	public void hanoi(int n, char A, char B, char C) {
    		// 最后一个盘子直接从A柱子移动到C柱子
    		if(1 == n) {
    			move(A, C);
    		} else {
    			// 将上面n-1个盘子从A柱子移动到B柱子
    			hanoi(n - 1, A, C, B);
    			// 将最下面的盘子从A柱子移动到C柱子
    			move(A, C);
    			// 将B柱子上的n-1个盘子移动到C柱子
    			hanoi(n - 1, B, A, C);
    		}
    	}
    
    	/**
    	 * 将盘子从x柱子移动到y柱子
    	 * @param x 盘子的源柱子
    	 * @param y 盘子的目的柱子
    	 */
    	public void move(char x, char y) {
    		System.out.println("Case #" + step + ": from " + x 
    			+ " to " + y + ".");
    		step++;	// 步数加1
    	}
    
    	public static void main(String[] args) {
    		new Main();
    	}
    
    }
    

    三、截图

    1223截图

  • 相关阅读:
    [c language] getopt
    编程经典问题
    一些常用的正则表达式
    [Head First Python]6. summary
    Java多线程
    JVM运行原理
    Struts2---自定义拦截器
    SpringMVC框架初步
    测试基本问题
    自动化测试
  • 原文地址:https://www.cnblogs.com/wowpH/p/11060844.html
Copyright © 2011-2022 走看看