2000年华中科技大学计算机研究生机试真题 对称矩阵
题目1180:对称矩阵
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2518
解决:1295
- 题目描述:
-
输入一个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!
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 int map[105][105]; 6 int main(){ 7 //freopen("D:\\INPUT.txt","r",stdin); 8 int n; 9 while(cin>>n){ 10 int i,j; 11 for(i=1;i<=n;i++){ 12 for(j=1;j<=n;j++){ 13 scanf("%d",&map[i][j]); 14 } 15 } 16 for(i=1;i<=n;i++){ 17 for(j=1;j<=n;j++){ 18 if(map[i][j]!=map[i][n-j]){ 19 i=n+2; 20 break; 21 } 22 } 23 } 24 if(i==n+1){ 25 cout<<"Yes!"<<endl; 26 continue; 27 } 28 for(i=1;i<=n;i++){ 29 for(j=1;j<=n;j++){ 30 if(map[i][j]!=map[n-i][j]){ 31 i=n+2; 32 break; 33 } 34 } 35 } 36 if(i==n+1){ 37 cout<<"Yes!"<<endl; 38 continue; 39 } 40 41 for(i=1;i<=n;i++){ 42 for(j=1;j<=n;j++){ 43 if(map[i][j]!=map[j][i]){ 44 i=n+2; 45 break; 46 } 47 } 48 } 49 if(i==n+1){ 50 cout<<"Yes!"<<endl; 51 continue; 52 } 53 54 for(i=1;i<=n;i++){ 55 for(j=1;j<=n;j++){ 56 if(map[i][j]!=map[n-j][n-i]){ 57 i=n+2; 58 break; 59 } 60 } 61 } 62 if(i==n+1){ 63 cout<<"Yes!"<<endl; 64 continue; 65 } 66 cout<<"No!"<<endl; 67 } 68 return 0; 69 }