1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
編寫程序,讀入一個n階方陣并檢查它是否具有奇偶均勢特性。如果沒有,你的程序應(yīng)當(dāng)再檢查一下它是否可以通過修改一位(把0改為1,把1改為0)來使它具有奇偶均勢特性;如果不可能,這個矩陣就被認為是破壞了。
定義并調(diào)用如下函數(shù):
int BalanceMatrix(int a[], int n);
函數(shù)返回1表示該矩陣具有奇偶均勢特性;函數(shù)返回2表示可以通過修改1位來達到奇偶均勢;函數(shù)返回-1表示該矩陣被是破壞了,無法恢復(fù)。
第一行是一個整數(shù)n ( 0< n < 100 ),代表該方陣的階數(shù)。然后輸入n 行,每行n個整數(shù)(0或1)。
如果矩陣是布爾矩陣,輸出“OK”;如果能通過只修改該矩陣中的一位來使它成為布爾矩陣,則輸出“Change bit(i,j)”,這里i和j是被修改的元素的行與列(行,列號從0開始);否則,輸出“Corrupt”。
41 0 1 00 0 0 01 1 1 10 1 0 1Sample Output
OKHINT
Source
#include<stdio.h>void main (){int i,j,n;int a[100][100];scanf("%d",&n);for (i=0;i<n;i++){ for (j=0;j<n;j++) scanf("%d",&a[i][j]);}int sum,count=0;int b,c;for (i=0;i<n;i++){sum=0;for (j=0;j<n;j++){sum+=a[i][j];}if (sum%2!=0){count++;b=i;}} for (j=0;j<n;j++){ sum=0;for (i=0;i<n;i++){sum+=a[i][j];} if (sum%2!=0){count++;c=j;}} if (count==0)PRintf("OK/n");else if ( count==2 && b>=0 && c>=0) printf("Change bit(%d,%d)/n",b,c); else printf("Corrupt/n");}
新聞熱點
疑難解答