博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 541 Error Correction
阅读量:4654 次
发布时间:2019-06-09

本文共 2315 字,大约阅读时间需要 7 分钟。

  Error Correction 

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 00 0 0 01 1 1 10 1 0 1

The 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 file 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

 

 


Miguel A. Revilla 
1999-01-11

 

给一个n*n矩阵,判断它是否具有题目中规定的parity property特征,如果不具有,是否可以通过只改变1位来使它具有parity property特征。

做法就是对矩阵的每行和每列求和,如果每行的和、每列的和都是偶数,则具有parity property特征;如果每行的和、每列的和中各有一个奇数,则可以通过改变一位使它具有partity property特征,改变的位的坐标就是这两个奇数所在的行坐标和列坐标;如果每行的和中奇数的个数大于2,或每列的和中奇数的个数大于2,则它是Corrupt的。

 

1 #include
2 #include
3 #include
4 5 using namespace std; 6 7 int n; 8 int sum_c[200],sum_r[200]; 9 int m[200][200];10 11 int main()12 {13 while(scanf("%d",&n)==1&&n)14 {15 memset(m,0,sizeof(m));16 memset(sum_c,0,sizeof(sum_c));17 memset(sum_r,0,sizeof(sum_r));18 19 for(int i=0;i
1||c>1)47 puts("Corrupt");48 else if(r==0&&c==0)49 puts("OK");50 else51 printf("Change bit (%d,%d)\n",pos_r,pos_c);52 }53 54 return 0;55 }
[C++]

 

转载于:https://www.cnblogs.com/lzj-0218/p/3565851.html

你可能感兴趣的文章
Coolite动态加载CheckboxGroup,无法在后台中获取
查看>>
如何在我们项目中利用开源的图表(js chart)
查看>>
nfs服务器工作原理
查看>>
C3P0连接池工具类使用
查看>>
SVN常用命令备注
查看>>
孩子教育
查看>>
解决Cacti监控图像断断续续问题
查看>>
结构体的传参理解成员的存储方式
查看>>
python 进程与线程(理论部分)
查看>>
什么是API
查看>>
[shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证
查看>>
强名称程序集(strong name assembly)——为程序集赋予强名称
查看>>
1028. List Sorting (25)
查看>>
BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划
查看>>
ubuntu 重启命令,ubuntu 重启网卡方法
查看>>
Linux的学习:
查看>>
JavaScript中的原型继承原理
查看>>
Python logger模块
查看>>
jquery控制css的display(控制元素的显示与隐藏)
查看>>
关于python做人工智能的一个网页(很牛逼)
查看>>