题意分析
判断每行每列1的个数是否为偶数
如果均为偶数,那么OK
如果只有1行1列为奇数,Change所在行列即可··
除此意外的所有情况均为Corrupt
代码总览
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int nmax = 105;
int matrix[nmax][nmax];
int line[nmax],col[nmax];
int main()
{
int n;
while(scanf("%d",&n) != EOF && n){
memset(line,0,sizeof line);
memset(col,0,sizeof col);
memset(matrix,0,sizeof matrix);
for(int i = 0;i<n;++i){
for(int j = 0;j<n;++j){
scanf("%d",&matrix[i][j]);
line[i] += matrix[i][j];
col[j] += matrix[i][j];
}
}
int llast = 0,lsum = 0 ,clast = 0,csum = 0;
for(int i = 0;i<n;++i){
if(line[i]&1){
llast = i;
lsum++;
}
if(col[i]&1){
clast = i;
csum++;
}
}
if(lsum == 0&& csum == 0){
printf("OK\n");
}else if(lsum == 1 && csum == 1){
printf("Change bit (%d,%d)\n",llast+1,clast+1);
}else{
printf("Corrupt\n");
}
}
return 0;
}