2012年10月2日 星期二

河洛之數 -JAVA入門練習

如果矩陣再大可能就要用到陣列,但考試的話,這樣解題簡單多了
設計3*3矩陣 數字由1-9不能重複,每次產生時矩陣排列都會有變化,但是縱橫交叉和都要為15

 public class JVD104 {

    public static void main(String[] args) {
        int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        boolean redo = true;
               do {
            // 1.交換陣列數字內容
            for (int i = 1; i <= 9; i++) {
                int j = (int) (Math.random() * 9) + 1;
                int temp;
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
            // 2.加總8種相加的可能(橫3縱3斜2)
            int v1 = a[1] + a[2] + a[3];
            int v2 = a[4] + a[5] + a[6];
            int v3 = a[7] + a[8] + a[9];
            int h1 = a[1] + a[4] + a[7];
            int h2 = a[2] + a[5] + a[8];
            int h3 = a[3] + a[6] + a[9];
            int y1 = a[1] + a[5] + a[9];
            int y2 = a[3] + a[5] + a[7];
            if (v1 == 15 && v2 == 15 && v3 == 15 && h1 == 15 && h2 == 15
                    && h3 == 15 && y1 == 15 && y2 == 15)
                redo = false;
        } while (redo); // false就跳開
               // 3.輸出結果
        System.out.println("答案為: ");
        System.out.println(a[1] + " " + a[2] + " " + a[3]);
        System.out.println(a[4] + " " + a[5] + " " + a[6]);
        System.out.println(a[7] + " " + a[8] + " " + a[9]);
        System.out.println("不論橫向縱向斜對角數字和均為15");
            }

}

沒有留言:

張貼留言