博客
关于我
POJ 2260 Error Correction 模拟 贪心 简单题
阅读量:429 次
发布时间:2019-03-06

本文共 2135 字,大约阅读时间需要 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 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 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的数量,看奇数个的交叉点,大于一个或没有则不能实现。


#include<stdio.h>int 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/

你可能感兴趣的文章
Prometheus 黑盒监控实战
查看>>
prometheus+alertmanager+grafana监控部署教程
查看>>
Prometheus+Grafana构建智能化Kubernetes监控系统实战
查看>>
Prometheus+SpringBoot应用监控全过程详解
查看>>
Prometheus+SpringBoot应用监控全过程详解
查看>>
prometheus安装
查看>>
Prometheus实战教程:监控Kafka消息
查看>>
Prometheus实战教程:监控mysql数据库
查看>>
Prometheus实战教程:监控Nginx状态
查看>>
prometheus常用exporter下载地址大全
查看>>
Prometheus快速搭建与监控Linux系统实战
查看>>
prometheus报警与恢复告警的格式
查看>>
Pytorch中安装 torch_geometric 详细图文操作(全)
查看>>
prometheus监控docker容器实战
查看>>
Prometheus监控k8s集群使用邮箱和微信告警!
查看>>
Prometheus监控mysq数据库实战
查看>>
prometheus监控nginx实战
查看>>
Prometheus监控redis数据库实战
查看>>
Prometheus监控教程:使用Grafana展示主机基本信息
查看>>
pytorch中如何使用预训练词向量
查看>>