题目描述
输入一个N维矩阵,判断是否对称。
输入描述:
输入第一行包括一个数:N(1<=N<=100),表示矩阵的维数。
接下来的N行,每行包括N个数,表示N*N矩阵的元素。
输出描述:
可能有多组测试数据,对于每组数据,
输出"Yes!”表示矩阵为对称矩阵。
输出"No!”表示矩阵不是对称矩阵。
示例1
输入
复制
4
16 19 16 6
19 16 14 5
16 14 16 3
6 5 3 16
2
1 2
3 4
输出
复制
Yes!
No!
import java.util.*;
import java.io.*;
import java.math.*;
import java.text.* ;
public class Main
{
static char[] pre;
static char[] in;
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while((str=br.readLine()) != null) {
int n = Integer.parseInt(str);
int[][] matrix = new int[n][n];
for(int i = 0; i < n; i++) {
String[] parts = br.readLine().split(" ");
for(int j = 0; j < n ;j++) {
matrix[i][j] = Integer.parseInt(parts[j]);
}
}
if(get1(matrix, n)||get2(matrix, n)||get3(matrix, n)||get4(matrix, n)) System.out.println("Yes!");
else System.out.println("No!");
}
} catch(IOException e) {
e.printStackTrace();
}
}
public static boolean get1(int[][] matrix, int n) {
int len = n/2;
for(int i = 0; i < len; i++) {
for(int j = 0; j < len; j++) {
if(matrix[i][j] != matrix[i][n-1-j]) {
return false;
}
}
}
return true;
}
public static boolean get2(int[][] matrix, int n) {
int len = n/2;
for(int i = 0; i < len; i++) {
for(int j = 0; j < len; j++) {
if(matrix[j][i] != matrix[n-1-j][i]) {
return false;
}
}
}
return true;
}
public static boolean get3(int[][] matrix, int n) {
for(int i = 0; i < n; i++) {
for(int j = 0; j < i; j++) {
if(matrix[i][j] != matrix[j][i]) {
return false;
}
}
}
return true;
}
public static boolean get4(int[][] matrix, int n) {
for(int i = 0; i < n; i++) {
for(int j = 0; j < n-1-i; j++) {
if(matrix[i][j] != matrix[n-1-i][n-1-j]) {
return false;
}
}
}
return true;
}
}