本文共 2134 字,大约阅读时间需要 7 分钟。
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 6825 | Accepted: 4289 |
Description
1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1The sums of the rows are 2, 0, 4 and 2. The sums of the columns are 2, 2, 2 and 2. Your job is to write a program that reads in a matrix and checks if it has the parity property. If not, your program should check if the parity property can be established by changing only one bit. If this is not possible either, the matrix should be classified as corrupt.
Input
Output
Sample Input
41 0 1 00 0 0 01 1 1 10 1 0 141 0 1 00 0 1 01 1 1 10 1 0 141 0 1 00 1 1 01 1 1 10 1 0 10
Sample Output
OKChange bit (2,3)Corrupt
计算每行每列1的数量,看奇数个的交叉点,大于一个或没有则不能实现。
#includeint main(){ int a[105][105]; int n; while (~scanf("%d", &n)) { int i, j; int num1 = 0,num2=0; if (!n) { break; } int x, y; for ( i = 1; i <= n; i++) { int sum = 0; for ( j = 1; j <= n; j++) { scanf("%d", &a[i][j]); sum += a[i][j]; } if (sum % 2 != 0) { x = i; num1++; } } for ( i = 1; i <= n; i++) { int sum = 0; for ( j = 1; j<= n;j++) { sum += a[j][i]; } if (sum % 2 != 0) { y = i; num2++; } } if (num1 == 0 && num2 == 0) { printf("OK\n"); } else if (num1 == 1 && num2 == 1) { printf("Change bit (%d,%d)\n", x, y); } else { printf("Corrupt\n"); } } return 0;}
转载地址:http://gkwuz.baihongyu.com/