题目描述
输入一个N维矩阵,判断是否对称。输入描述:
输入第一行包括一个数:N(1<=N<=100),表示矩阵的维数。
接下来的N行,每行包括N个数,表示N*N矩阵的元素。
输出描述:
可能有多组测试数据,对于每组数据,
输出"Yes!”表示矩阵为对称矩阵。
输出"No!”表示矩阵不是对称矩阵。
输入例子:
4
16 19 16 6
19 16 14 5
16 14 16 3
6 5 3 16
2
1 2
3 4
输出例子:
Yes!
No!
思路:判断上三角或者下三角,不比全判断。
小技巧:读入的时候直接按照字符串去读,存数组的时候直接按照字符串去存,速度比转成整型要快!
JAVA读入数据建议按行读入,不建议Scanner读入法。
package huazhongUniversity;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class SymmetryArray {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String line=null;
while((line=br.readLine())!=null){
int n=Integer.parseInt(line);
String [][] a=new String[n][n];
for(int i=0;i<n;++i){
a[i]=br.readLine().split(" ");
}
boolean flag=false;
for(int i=0;i<n;++i){
for(int j=0;j<i;++j){
if(!a[i][j].equals(a[j][i])){
System.out.println("No!");
flag=true;
break;
}
}
if(flag){
break;
}
}
if(!flag){
System.out.println("Yes!");
}
}
}
}