如果矩陣再大可能就要用到陣列,但考試的話,這樣解題簡單多了
設計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");
}
}
沒有留言:
張貼留言