一、分析
题目大意就是要求每行每列加起来都是偶数,如果不是就判断是否可以通过改变其中某个值来满足要求,并按格式输出其坐标,如果需要改变的值超过了一个就输出Corrupt。
思路就是用两个数组分别存储每行每列的和值,如果两个数组都同时含有一个奇数就输出坐标,如果都没有奇数就输出Ok,如果超过一个就输出Corrupt。
二、代码
代码如下(示例):
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int i,j;
int a[105][105];
int b[105],c[105];
int main()
{
int n;
while(scanf("%d",&n)==1)
{
if(n==0)
break;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
b[i]=0;
for(j=0;j<n;j++)
{
b[i]=b[i]+a[i][j];
}
}
for(i=0;i<n;i++)
{
c[i]=0;
for(j=0;j<n;j++)
{
c[i]=c[i]+a[j][i];
}
}
int t1=0,t2=0;int s1=0,s2=0;
for(i=0;i<n;i++)
{
if(b[i]%2)
{
s1++;
t1 = i;
}
}
for(i=0;i<n;i++)
{
if(c[i]%2)
{
s2++;
t2=i;
}
}
if(s1>1||s2>1)
printf("Corrupt\n");
else
if(!s1&&!s2)
printf("OK\n");
else
printf("Change bit (%d,%d)\n",t1+1,t2+1);
}
return 0;
}