一个布尔矩阵有一种奇偶性,即该矩阵所有行和所有列的和都是偶数。下面这4×4的矩阵就具有奇偶性:
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
它所有行的和是2,0,4,2。它所有列的和是2,2,2,2。
现请你编写一个程序,读入这个矩阵并检查它是否具有奇偶性。如果没有,你的程序应当再检查一下它是否可以通过修改一位(把0修改为1,把1修改为0)来使它具有奇偶性。如果不可能,这个矩阵就被认为是破坏了。
标签:time return include tin 没有 i++ 输出 整数 pac
4 1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 4 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 4 1 0 1 0 0 1 1 0 1 1 1 1 0 1 0 1 0
OK Change bit (2,3) Corrupt
挺简单的一道题
1 #include <stdio.h> 2 #include <algorithm> 3 using namespace std; 4 5 bool judge(int a[][101],int n) 6 { 7 int x=1,y=1; 8 for(int i=1;i<=n;i++) 9 { 10 int f=0,t=0; 11 for(int j=1;j<=n;j++) 12 { 13 f+=a[i][j]; 14 t+=a[j][i]; 15 } 16 if(f%2) 17 x=0; 18 if(t%2) 19 y=0; 20 } 21 if(x&&y) 22 return true; 23 else 24 return false; 25 } 26 27 void change(int a[][101],int n) 28 { 29 for(int i=1;i<=n;i++) 30 { 31 for(int j=1;j<=n;j++) 32 { 33 if(a[i][j]) 34 { 35 a[i][j]=0; 36 if(judge(a,n)) 37 { 38 printf("Change bit (%d,%d)\n",i,j); 39 return ; 40 } 41 else 42 { 43 a[i][j]=1; 44 continue; 45 } 46 } 47 else 48 { 49 a[i][j]=1; 50 if(judge(a,n)) 51 { 52 printf("Change bit (%d,%d)\n",i,j); 53 return ; 54 } 55 else 56 { 57 a[i][j]=0; 58 continue; 59 } 60 } 61 } 62 } 63 printf("Corrupt\n"); 64 return ; 65 } 66 67 int main() 68 { 69 int n; 70 while(scanf("%d",&n),n) 71 { 72 int a[101][101]; 73 for(int i=1;i<=n;i++) 74 { 75 for(int j=1;j<=n;j++) 76 { 77 scanf("%d",&a[i][j]); 78 } 79 } 80 if(judge(a,n)) 81 printf("OK\n"); 82 else 83 change(a,n); 84 } 85 return 0; 86 }
标签:time return include tin 没有 i++ 输出 整数 pac
原文地址:https://www.cnblogs.com/jiamian/p/11029496.html