package com.interview.design.questions; import java.util.Stack; /** * Created_By: stefanie * Date: 14-11-20 * Time: 下午1:27 */ public class DZ13_HanoiGame { static class Tower extends Stack<Integer>{ int id; public Tower(int id){ this.id = id; } } Tower[] towers; public DZ13_HanoiGame(int n){ towers = new Tower[3]; for(int i = 0; i < 3; i++) towers[i] = new Tower(i); for(int i = n; i > 0; i--) towers[0].push(i); } public void play(){ move(towers[0], towers[2], towers[1], towers[0].size()); } public void move(Tower src, Tower des, Tower buf, int size){ if(size <= 0) return; if(size == 1) { int element = src.pop(); System.out.printf("move %d from tower%d to tower%d\n", element, src.id, des.id); des.push(element); } else { move(src, buf, des, size - 1); int element = src.pop(); System.out.printf("move %d from tower%d to tower%d\n", element, src.id, des.id); des.push(element); move(buf, des, src, size - 1); } } public static void main(String[] args){ DZ13_HanoiGame hanoi = new DZ13_HanoiGame(3); hanoi.play(); } }