每行每列和都为偶数,则输出ok,修改一个位置的状态,也使得每行每列和都为偶数,则输出Change bit (x,y),否则输出Corrupt
先判断行中和是否有出现两个以上的 和为奇数,则输出 Corrupt。。。。
#include<stdio.h>
int main()
{
int a[105][105],i,j,ansx,ansy,count,flag,n;
while(scanf("%d",&n)!=EOF,n)
{
ansx=ansy=-1;
flag=0;
for(i=0;i<n;i++)
{
count=0;
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j])count++;
}
if(count%2)
{
if(ansx!=-1)flag=1;
else
ansx=i;
}
}
if(flag)
{
printf("Corrupt\n");
continue;
}
for(i=0;i<n;i++)
{
count=0;
for(j=0;j<n;j++)
{
if(a[j][i])count++;
}
if(count%2)
{
if(ansy!=-1)flag=1;
else
ansy=i;
}
}
if(flag)printf("Corrupt\n");
else
if(ansx==-1&&ansy==-1)printf("OK\n");
else
printf("Change bit (%d,%d)\n",ansx+1,ansy+1);
}
return 0;
}