2024 10.25 判断一个矩阵是否对称
主对角线对称
思路:a[i][j]!=a[j][i] 第一行和第一列顺序比较,后面依次类推
#include <stdio.h>
int main(){
int n,m;
scanf("%d",&n);
int a[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
int flag = 1;
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
if(a[i][j]!=a[j][i]){
flag = 0;
break;
}
}
}
if(flag==0){
printf("NO");
}else{
printf("YES");
}
return 0;
}
副对角线对称
思路:a[i][j]!=a[n-1-j][n-1-i] 画个图让第一行和最后一列比较,然后第二趟就是第二行和最后第二列比较如果有不一样的就跳出来。
#include <stdio.h>
//上下对称反转
int main(){
int n,m;
scanf("%d",&n);
int a[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
int flag = 1;
for(int i=0;i<n;i++){
for(int j=i;j<=n-1-i;j++){
if(a[i][j]!=a[n-1-j][n-1-i]){
flag = 0;
break;
}
}
}
if(flag==0){
printf("NO");
}else{
printf("YES");
}
return 0;
}