【Java】汉诺塔问题

原创 2015年07月10日 16:39:59
import java.util.Stack;


public class Tower {
	private Stack<Integer> disks;
	private int index;
	public Tower(int i) {
		disks = new Stack<Integer>();
		index = i;
	}
	
	public int index() {
		return index;
	}
	
	public void add(int d) {
		if (! disks.isEmpty() && disks.peek() <= d) {
			System.out.println("Error place in disk" + d);
		}
		else {
			disks.push(d);
		}
	}
	
	public void moveTopTo(Tower t) {
		int top = disks.pop();
		t.add(top);
		System.out.println("Move disk " + top + " from " + index() + " to "+ t.index());
	}
	
	public void moveDisks(int n, Tower destination, Tower buffer) {
		if (n > 0) {
			moveDisks(n-1, buffer, destination);
			moveTopTo(destination);
			buffer.moveDisks(n - 1, destination, this);
		}
	}
}

public static void main(String[] args) {
	int n = 3;
	Tower[] towers = new Tower[n];
	for (int i = 0; i <3; i++) {
		towers[i] = new Tower(i);
	}
	
	for (int i = n-1; i >= 0; i--) {
		towers[0].add(i);
	}
	
	towers[0].moveDisks(n,  towers[2], towers[1]);
}

JAVA汉诺塔的问题

  • 2008年01月18日 20:11
  • 7KB
  • 下载

Java经典算法——汉诺塔问题

题目: 最大圆盘在最底,其余依次叠上去,依次减小,现要求将圆盘逐个移动到另一根杆上,规定一次只能移动一个,且小的只能放到大的上面。 import java.util.Scanner; publ...

Java源码汉诺塔问题的解决.rar

  • 2013年11月08日 17:14
  • 7KB
  • 下载

汉诺塔问题的java递归实现

import java.util.Scanner; public class Hanoi { int count=0; public void hanoi(int n,char A,char B...

汉诺塔问题java

  • 2014年05月09日 09:05
  • 495B
  • 下载

Java 递归解决 "汉诺塔" 问题

/** * 汉诺塔 问题 * 有塔A、B、C, 其中A中叠放了一些盘子,最下层的盘子最大,最上层的最小 * 要将A的盘子移动到C,且较大的盘子不能放在较小的盘子上 * * @author ...

汉诺塔问题(java实现)

1.问题描述:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大...

Java经典编程300例之实例047 汉诺塔问题求解(递归)

实例说明 汉诺塔问题的描述如下:有A、B和C 3跟柱子,在A上从下往上按照从小到大的顺序放着64个圆盘,以B为中介,把盘子全部移动到C上。移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java】汉诺塔问题
举报原因:
原因补充:

(最多只允许输入30个字)