对称矩阵的判定
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
输入矩阵的行数,再依次输入矩阵的每行元素,判断该矩阵是否为对称矩阵,若矩阵对称输出“yes",不对称输出”no“。
Input
输入有多组,每一组第一行输入一个正整数N(N<=20),表示矩阵的行数(若N=0,表示输入结束)。
下面依次输入N行数据。
Output
若矩阵对称输出“yes",不对称输出”no”。
Sample Input
3 6 3 12 3 18 8 12 8 7 3 6 9 12 3 5 8 12 6 3 0
Sample Output
yes no
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int main()
{
int N, i, j;
while(~scanf("%d", &N))
{//多组输入
if(N == 0)
{
break;
}//如果N = 0,表示输入结束
int a[21][21];
memset(a, 0, sizeof(a));
for(i = 1; i <= N; i++)
{
for(j = 1; j <= N; j++)
{
scanf("%d", &a[i][j]);
}//从1开始存数据,方便人为理解和检查
}
int flag = 1;//先假设是对称矩阵
for(i = 1; i <= N; i++)
{
for(j = 1; j <= N; j++)
{
if(a[i][j] != a[j][i]) flag = 0;
}//如果对称方向上的数不相等,则不是对称矩阵
}
if(flag) printf("yes\n");
else printf("no\n");
}
return 0;
}