一個超級簡單題,還是以前做過的,沒考慮到可以改變為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;
}