J - Symmetric Matrix
Time Limit: 1 sec
Memory Limit: 16MB
You`re given a square matrix M. Elements of this matrix are Mij: {0 < i < n, 0 < j < n}. In this problem you'll have to find out whether the given matrix is symmetric or not.
Definition: Symmetric matrix is such a matrix that all elements of it are non-negative and symmetric with relation to the center of this matrix. Any other matrix is considered to be non-symmetric. For example:
All you have to do is to find whether the matrix is symmetric or not. Elements of a matrix given in the input are -232 <= Mij <= 232 and 0 < n <= 100.
INPUT:
First line of input contains number of test cases T <= 300. Then T test cases follow each described in the following way. The first line of each test case contains n - the dimension of square matrix. Then n lines follow each of then containing row i. Row contains exactly n elements separated by a space character. j-th number in row i is the element Mij of matrix you have to process.OUTPUT:
For each test case output one line "Test #t: S
". Where t
is the test number starting from 1. Line S
is equal to "Symmetric
" if matrix is symmetric and "Non-symmetric
" in any other case.SAMPLE INPUT:
2 N = 3 5 1 3 2 0 2 3 1 5 N = 3 5 1 3 2 0 2 0 1 5
SAMPLE OUTPUT:
Test #1: Symmetric.
Test #2: Non-symmetric.
大意:給一個矩陣 問你是否是對稱性矩陣(即是Mij = Mji)
解法:以中心點為對稱比較 (檢驗一半即可) or 一維陣列檢驗(將數字以列拉直後會發現成迴文)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class UVA11349 {
public static void main(String[] args) throws NumberFormatException,
IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(bf.readLine());
int k = 1;
StringBuilder sb = new StringBuilder();
for (int c = 0; c < count; c++) {
String s[] = bf.readLine().split(" ");
int N = Integer.parseInt(s[2]);
boolean check = true;
long N_matrix[][] = new long[N][N];
for (int i = 0; i < N; i++) {
String temp[] = bf.readLine().split(" ");
for (int j = 0; j < N; j++) {
N_matrix[i][j] = Long.parseLong(temp[j]);
if (N_matrix[i][j] < 0) {
check = false;
break;
}
}
}
if (check == false) {
sb.append("Test #" + k + ": Non-symmetric." + "\n");
k++;
continue;
}
int center = 0;
if (check)
center = (N + 1) / 2;
for (int i = 0; i < center; i++) {
for (int j = 0; j < N; j++) {
if (N_matrix[i][j] != N_matrix[(N - i - 1)][(N - j - 1)]) {
check = false;
break;
}
}
}
sb.append("Test #" + k + ": "
+ (check == true ? "Symmetric." : "Non-symmetric.") + "\n");
k++;
}
System.out.print(sb);
}
}
留言
張貼留言