ZZULIOJ 1126: 布林矩陣的奇偶性
阿新 • • 發佈:2018-11-30
題目描述
一個布林方陣具有奇偶均勢特性,當且僅當 每行、每列總和為偶數,即包含偶數個1。如下面這個4*4的矩陣就具有奇偶均勢特性:
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
編寫程式,讀入一個n階方陣並檢查它是否具有奇偶均勢特性。如果沒有,你的程式應當再檢查一下它是否可以通過修改一位(把0改為1,把1改為0)來使它具有奇偶均勢特性;如果不可能,這個矩陣就被認為是破壞了。
輸入
第一行是一個整數n ( 0< n < 100 ),代表該方陣的階數。然後輸入n 行,每行n個整數(0或1)。
輸出
如果矩陣是布林矩陣,輸出“OK”;如果能通過只修改該矩陣中的一位來使它成為布林矩陣,則輸出“Change bit(i,j)”,這裡i和j是被修改的元素的行與列(行,列號從0開始);否則,輸出“Corrupt”。
樣例輸入4
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
樣例輸出OK
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[110][110],b,c;
cin>>n;
int i,j,flag1=0,flag2=0,sum;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
for(i=0;i<n;i++){
sum=0;
for (j=0;j<n;j++)
sum+=a[i][j];
if(sum%2!=0)
flag1++,b=i;
}
for(i=0;i<n;i++){
sum=0;
for(j=0;j<n;j++)
sum+=a[j][i];
if(sum%2!=0)
flag2++,c=i;
}
if(flag1==0&&flag2==0) cout<<"OK\n"<<endl;
else
if (flag1==1&&flag2==1)
printf("Change bit(%d,%d)\n",b,c);
else
cout<<"Corrupt\n"<<endl;
return 0;
}