一个超级简单题,还是以前做过的,没考虑到可以改变为0的位,错了好几次,BS自己一下。
coding不仅要快而且要准确啊。
#include <stdio.h>
#include <string.h>
#define N 105
int a[N][N], row[N], col[N];
bool check(int n)
{
for(int i = 0; i < n; i++)
{
if((row[i] & 1) || (col[i] & 1))
{
return 1;
}
}
return 0;
}
int main()
{
int n, mk;
while(scanf("%d", &n), n)
{
memset(row, 0, sizeof(row));
memset(col, 0, sizeof(col));
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
scanf("%d", &a[i][j]);
row[i] += a[i][j];
col[j] += a[i][j];
}
}
if(!check(n))
{
puts("OK");
continue;
}
for(int i = 0; i < n; i++)
{
mk = 0;
for(int j = 0; j < n; j++)
{
int tmp = a[i][j];
a[i][j] = 1 - tmp;
if(tmp == 1) row[i]--, col[j]--;
else row[i]++, col[j]++;
if(!check(n))
{
mk = 1;
printf("Change bit (%d,%d)\n", i + 1, j + 1);
break;
}
a[i][j] = tmp;
if(!tmp) row[i]--, col[j]--;
else row[i]++, col[j]++;
}
if(mk) break;
}
if(!mk) puts("Corrupt");
}
return 0;
}