1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1
4 1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 4 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 4 1 0 1 0 0 1 1 0 1 1 1 1 0 1 0 1 0
OK Change bit (2,3) Corrupt
#include<stdio.h>
#include<string.h>
int main (void)
{
int a;
while(scanf("%d",&a)!=EOF&&a!=0)
{
int b[101][101];
int c[1010],d[1010];
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
for(int i=0; i<a; i++)
{
for(int ii=0; ii<a; ii++)
{
scanf("%d",&b[i][ii]);
c[i]=b[i][ii]+c[i];
}
}
for(int i=0; i<a; i++)
{
for(int ii=0; ii<a; ii++)
{
d[i]+=b[ii][i];
}
}
int k=0,kk=0;
int end=0;
int x,y;
for(int i=0; i<a; i++)
{
if(c[i]%2==1)
{
k++;
x=i;
}
if(d[i]%2==1)
{
kk++;
y=i;
}
if(k==2||kk==2)
{
printf("Corrupt\n");
end=1;
break;
}
}
if(k==0&&kk==0)
{
printf("OK\n");
}
if(k==1&&kk==1)
{
printf("Change bit (%d,%d)\n",x+1,y+1);
}
}
return 0;
}
原文:http://blog.csdn.net/qq_24653023/article/details/51353640