河內塔是由三根柱子及N個盤子組成的遊戲,玩家需按規則依序將盤子由A柱移動到C柱,其規則如下:

  1. 一次只能移動一個盤子
  2. 大盤子不可以疊在小盤子上

JAVA:

import java.util.*;

public class HanoiTower {
    private ArrayList route = new ArrayList();
	
    public static void main(String args[]) {
        System.out.print("請輸入盤數:");
        HanoiTower hanoi = new HanoiTower();
        int n = new Scanner(System.in).nextInt();
        for(String move:hanoi.move(n, 'A', 'B', 'C'))
            System.out.println(move);
    }
	
    private ArrayList move(int n, char a, char b, char c) {
        if(n == 1) {
            route.add(a + " -> " + c);
        } else {
            move(n - 1, a, c, b); 
            move(1, a, b, c); 
            move(n - 1, b, a, c);
        }
        return route;
    }
}

河內塔的詳細介紹請看這裡

arrow
arrow
    全站熱搜

    taurus770423 發表在 痞客邦 留言(1) 人氣()