2012-05-01 21:08:00Morris
[UVA] 11349 - Symmetric Matrix
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.
這裡的對稱矩陣跟我們高中所學的不一樣, 是以中心為對稱的矩陣, 且不可有負數的元素
#include <stdio.h>int main() {
int t, n, Case = 0;
long long map[101][101];
char str[3];
scanf("%d", &t);
while(t--) {
scanf("%s %s %d", str, str, &n);
int flag = 0, i, j;
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) {
scanf("%lld", &map[i][j]);
if(map[i][j] < 0) flag = 1;
}
}
for(i = 0; i < n; i++) {
for(j = 0; j < n-i; j++) {
if(map[i][j] != map[n-1-i][n-1-j]) {
flag = 1;
goto end;
}
}
}
end:
printf("Test #%d: ", ++Case);
if(flag)
puts("Non-symmetric.");
else
puts("Symmetric.");
}
return 0;
}