输入一个N维矩阵,判断是否对称。
输入第一行包括一个数:N(1<=N<=100),表示矩阵的维数。
开始没有加flag=false/与printf中的\n,在牛客网怎样也通过不了,后加上之后就通过了。
输入描述:
输入第一行包括一个数:N(1<=N<=100),表示矩阵的维数。
接下来的N行,每行包括N个数,表示N*N矩阵的元素。
#include<stdio.h>
int a[100][100];
int main(){
int i, j, N;
bool flag = false;
while (~scanf("%d", &N)){
flag=false;
for (i = 0; i < N; i++){
for (j = 0; j < N; j++){
scanf("%d", &a[i][j]);
}
}
for (i = 0; i<N; i++)
for (j =0; j<i; j++){
if (a[i][j] != a[j][i])
{ flag = true;
break;
}
}
if (flag)
printf("No!\n");
else
printf( "Yes!\n" );
}
return 0;
}
原因:while循环一直有输入,若最开始不是对称矩阵,辣么第一输出时flag=ture,第二次输入时的flag就默认为ture,也就是无论第二次输入的是否是对称矩阵,都会返回不是对称矩阵。