
POJ 2260 Error Correction 模拟 贪心 简单题
发布日期:2021-05-09 01:46:28
浏览次数:20
分类:博客文章
本文共 2134 字,大约阅读时间需要 7 分钟。
Error Correction
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 6825 | Accepted: 4289 |
Description
A boolean matrix has the parity property when each row and each column has an even sum, i.e. contains an even number of bits which are set. Here's a 4 x 4 matrix which has the parity property:
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
The input will contain one or more test cases. The first line of each test case contains one integer n (n<100), representing the size of the matrix. On the next n lines, there will be n integers per line. No other integers than 0 and 1 will occur in the matrix. Input will be terminated by a value of 0 for n.
Output
For each matrix in the input file, print one line. If the matrix already has the parity property, print "OK". If the parity property can be established by changing one bit, print "Change bit (i,j)" where i is the row and j the column of the bit to be changed. Otherwise, print "Corrupt".
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;}
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月25日 10时52分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
django-表单之模型表单渲染(六)
2019-03-06
c++之程序流程控制
2019-03-06
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
2019-03-06
有道云笔记 同步到我的博客园
2019-03-06
李笑来必读书籍整理
2019-03-06
Hadoop(十六)之使用Combiner优化MapReduce
2019-03-06
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
2019-03-06
CoreCLR源码探索(八) JIT的工作原理(详解篇)
2019-03-06
andriod 开发错误记录
2019-03-07
C语言编译错误列表
2021-05-10
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
2021-05-10
python中列表 元组 字典 集合的区别
2021-05-10
Android DEX加固方案与原理
2021-05-10
iOS_Runtime3_动态添加方法
2021-05-10
Leetcode第557题---翻转字符串中的单词
2021-05-10
Problem G. The Stones Game【取石子博弈 & 思维】
2021-05-10
Java多线程
2021-05-10
openssl服务器证书操作
2021-05-10