原题
这道题虽然一次ac了,而且写的很顺,基本没调就过了,所以记录一下想法撒
#include<bits/stdc++.h>
using namespace std;
int main()
{
int s[101][101] = {};
int x[101],y[101];
int n,flag = 0,x1,sumx = 0,y1,sumy = 0;
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
scanf("%d",&n);
for(int i = 1;i <= n;++ i){
for(int j = 1;j <= n;++ j){
scanf("%d",&s[i][j]);
}
}
for(int i = 1;i <= n;++ i){
for(int j = 1;j <= n;++ j){
x[i] += s[i][j];
y[j] += s[i][j];
}
}
for(int i = 1;i <= n;++ i){
if(x[i] % 2 != 0){
flag = 1;
++ sumx;
if(sumx == 1){
x1 = i;
}
}
}
for(int i = 1;i <= n;++ i){
if(y[i] % 2 != 0){
flag = 1;
++ sumy;
if(sumy == 1){
y1 = i;
}
}
}
if(flag == 0){
printf("OK");
}
else if(sumx == 1 && sumy == 1){
printf("%d %d",x1,y1);
}
else{
printf("Corrupt");
}
return 0;
}
这里拿了两个数组,一个x一个y来储存矩阵每一行每一列的奇偶情况
对于题意要想明白一件事情,所谓能只改一个元素就能正确就是此元素所在的行和列的1个数都为奇数;而只有行和列的其中之一为奇数是不行的,改元素势必会影响到其他的偶数。