华中科技大学 对称矩阵(java)

题目描述
输入一个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;
	}	
}


发布了252 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43306331/article/details/104268329