布尔矩阵:
#include<stdio.h>
int main(){
int num, x=0, y=0, flag=1, flag1=1,ret,count=0,count1=0;
int a[100][100];
scanf("%d",&num);
for (int i = 0; i < num; i++)
{
for (int j = 0; j < num; j++)
scanf("%d",&a[i][j]);
}
for (int i = 0; i < num; i++)
{
ret = 0;
for (int j = 0; j < num; j++){
if (a[i][j]==1)
{
ret++;
}
}
if (ret%2) //
{
flag = 0;
x = i;
count++;
}
}
for (int j = 0; j < num; j++)
{
ret = 0;
for (int i = 0; i < num; i++){
if (a[i][j]==1)
{
ret++;
}
}
if (ret%2){
flag1 = 0;
y = j;
count1++;
}
}
if (flag&&flag1)
{
printf("OK");
}
else if (count==1&&count1==1)
{
printf("Change bit(%d,%d)",x,y);
}
else{
printf("Corrupt");
}
}
上三角矩阵判断:
#include <stdio.h>
#define N 10
int IsUpperTriMatrix(int a[][N], int n)
{
int i,j,c=1;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i>j&&i>0)
{
if(a[i][j]!=0){
c=0;
}
}
}
}return c;
}
int main()
{
int n,i,j,a[N][N];
scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}if(IsUpperTriMatrix(a,n)){
printf("YES\n");
}else
printf("NO\n");
return 0;
}