博客
关于我
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/

你可能感兴趣的文章
Nginx实现限流
查看>>
Nginx将https重定向为http进行访问的配置(附Demo)
查看>>
nginx工作笔记004---配置https_ssl证书_视频服务器接口等
查看>>
nginx工作笔记005---nginx配置负载均衡_在微服务中实现网关集群_实现TCP传输层协议__http协议的负载均衡
查看>>
nginx常用命令及简单配置
查看>>
Nginx常用屏蔽规则,让网站更安全
查看>>
Nginx常见问题
查看>>
nginx平滑升级解决 nginx 安全漏洞(CVE-2021-23017)和NGINX 环境问题漏洞(CVE-2019-20372)
查看>>
Nginx平滑添加模块
查看>>
Nginx开启gzip网页传输压缩配置
查看>>
nginx开机启动脚本
查看>>
nginx异常:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf
查看>>
nginx总结及使用Docker创建nginx教程
查看>>
nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:128
查看>>
nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in usrlocalnginxconfnginx.conf128
查看>>
Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览
查看>>
Nginx搭建静态资源映射实现远程访问服务器上的图片资源
查看>>
nginx日志不支持中文
查看>>
nginx日志分割并定期删除
查看>>
Nginx日志分析系统---ElasticStack(ELK)工作笔记001
查看>>