注释里的代码,wrong answer,找不出错误了,真伤脑筋,如果有人找出来了,那万分感谢。找不出来,就小改动了技巧。
/*#include <iostream>
using namespace std;
int main ()
{
int n , iflag , jflag , destory;
bool flag;
while (cin>>n)
{
if (n == 0) break;
int nn[n][n];
iflag = jflag = -1;
for (int i = 0; i < n; i++)
{
flag = true;
destory = 0;
for (int j = 0; j < n; j++) //输入并且判断第i行有偶数个1则flag=true
{
cin>>nn[i][j];
if (nn[i][j] == 1) flag = !flag;
}
if (!flag)
{
iflag = i;
destory++;//有几行奇数行
}
}
if (destory > 1)
{
cout<<"Corrupt"<<endl;
continue;
}
for (int i = 0; i < n; i++)
{
flag = true;
destory = 0;
for (int j = 0; j < n; j++) //判断第i列有偶数个1则flag=true
{
if (nn[j][i] == 1) flag = !flag;
}
if (!flag)
{
jflag = i;
destory++;//有几列奇数列
}
}
if (destory > 1)
{
cout<<"Corrupt"<<endl;
continue;
}
if (iflag == -1 && jflag == -1)
{
cout<<"OK"<<endl;
}
else if (iflag != -1 && jflag != -1)
{
cout<<"Change bit ("<<iflag+1<<","<<jflag+1<<")"<<endl;
}
else
{
cout<<"Corrupt"<<endl;
}
}
return 0;
}
*/
#include <iostream>
using namespace std;
int nn[100][100];
int main ()
{
int n , sum , l , c , lflag , cflag;
while (cin>>n)
{
if (n == 0) break;
l = c = 0;
for (int i = 0; i < n; i++)
{
sum = 0;
for (int j = 0; j < n; j++)
{
cin>>nn[i][j];
sum += nn[i][j];
}
if (sum % 2 != 0)
{
l++;
lflag = i;
}
}
for (int i = 0; i < n; i++)
{
sum = 0;
for (int j = 0; j < n; j++)
{
sum += nn[j][i];
}
if (sum % 2 != 0)
{
c++;
cflag = i;
}
}
if (l == 0 && c == 0)
{
cout<<"OK"<<endl;
}
else if (l == 1 && c == 1)
{
cout<<"Change bit ("<<lflag+1<<","<<cflag+1<<")"<<endl;
}
else
{
cout<<"Corrupt"<<endl;
}
}
return 0;
}