題目描述
給定一個大小為NxN的正方形矩陣,請計算出其兩條對角線總和相減的絕對值。
原題網址
輸入格式
輸入的第一行是一個整數N,接下來的N行,每行各有N個數字,以空格分隔,用來組成一個NxN的矩陣資料。
輸出格式
輸出這個矩陣的兩個對角線數值總和相減之後的絕對值。
範例輸入
3 11 2 4 4 5 6 10 8 -12
範例輸出
15
額外解釋
第一條對角線為:
11 5 -12
第一條對角線的總和為:
11 + 5 - 12 = 4
第二條對角線為:
4 5 10第二條對角線的總和為:
4 + 5 + 10 = 19
將兩條對角線的總和相減取絕對值:
|4 - 19| = 15
解題概念
先動腦簡化問題,因為我們只需要計算對角線的「差」,而不需要知道兩條對角線個別的「和」。所以在讀取完矩陣並建立出二維陣列物件之後,可以直接利用一個for迴圈,來累加兩條對角線的「差」,最後再使用「Math」類別所提供的「abs」方法來取得絕對值。
參考答案
import java.util.Scanner;
public class Solution {
public static void main(final String[] args) throws Exception {
final Scanner sc = new Scanner(System.in);
final int n = sc.nextInt();
final int[][] array = new int[n][n];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
array[i][j] = sc.nextInt();
}
}
int difference = 0;
for (int i = 0; i < n; ++i) {
final int ii = n - i - 1;
difference += array[i][i] - array[i][ii];
}
System.out.println(Math.abs(difference));
}
}