OpenJudge计算概论-错误探测
/*========================================================================
错误探测
总时间限制: 1000ms 内存限制: 65536kB
描述
给出由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。
你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。
"改变矩阵元素"的操作定义为0变成1,1变成0。 输入
包含多个测试数据。每个测试数据有多行,第一行为矩阵的大小n(n < 100),以下n行为矩阵的值。
输入以0结束。
输出
如果矩阵符合条件,则输出OK
如果矩阵仅改变一个矩阵元素就能符合条件,则输出Change bit (x,y),其中x和y为该元素的坐标
如果不符合以上两条,输出Corrupt
样例输入
4
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
4
1 0 1 0
0 0 1 0
1 1 1 1
0 1 0 1
4
1 0 1 0
0 1 1 0
1 1 1 1
0 1 0 1
0
样例输出
OK
Change bit (2,3)
Corrupt 分析:
输入数组时不需存储数组的数据;
输入时同时计算并用两个一维数组存储每一行、每一列的和 ;
注意求和前要对两个一维数组清零;
统计奇数个1的行和奇数个1的列 的数量rowN和colN;
假如rowN==colN==1说明有且仅有一行和一列含有奇数个1
(这个情况只需要把该行和该列交叉处的值改变一下即可,所以结果就是Change bit (2,3))
假如 rowN==colN==0,则是OK
假如是其他情况则是Corrupt 注意:输出案例Change bit (2,3)在左括号'(' 前是有一个空格的。少了这个空格,
提交时格式错误的。 另外:分析一下输入输出案例第二组数据发现,题目默认数组的下标从1开始。
==========================================================================*/
#include<stdio.h>
int main()
{
int n,i,j,t;
int rowSum[],colSum[];//分别存储每一行、每一列的和
int rowN,colN;//存储有奇数个1的行数、列数
int x,y;
freopen("6.in","r",stdin);
freopen("result.out","w",stdout);
scanf("%d",&n);
while(n!=)
{
for(i=;i<;i++)//清空求和数组
{
rowSum[i]=;
colSum[i]=;
}
//输入的同时计算每一行每一列的和
for(i=;i<n;i++)
{
for(j=;j<n;j++)
{
scanf("%d",&t);
rowSum[i]=rowSum[i]+t;
colSum[j]=colSum[j]+t;
}
}
rowN=;
colN=;
for(i=;i<n;i++)//检测奇数个1的行、奇数个1的列
{
if(rowSum[i]&)
{
rowN++;
x=i;
}
if(colSum[i]&)
{
colN++;
y=i;
}
}
//判断结果
if(rowN==&&colN==)
{
printf("Change bit (%d,%d)\n",x+,y+);
}
else if(rowN==&&colN==)
{
printf("OK\n");
}
else
printf("Corrupt\n");
//输入下一组的阶数
scanf("%d",&n);
}
return ;
}
OpenJudge计算概论-错误探测的更多相关文章
- OpenJudge计算概论-取石子游戏
OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...
- Openjudge计算概论——数组逆序重放【递归练习】
/*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...
- OpenJudge计算概论-计算书费
/*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...
- OpenJudge计算概论-最高的分数
/*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...
- OpenJudge计算概论-比饭量【枚举法、信息数字化】
/*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...
- Openjudge计算概论-角谷猜想
/*===================================== 角谷猜想 总时间限制: 1000ms 内存限制: 65536kB 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数 ...
- OpenJudge计算概论-字符串最大跨距
/*====================================================================== 字符串最大跨距 总时间限制: 1000ms 内存限制: ...
- Openjudge计算概论-求序列中的众数
/*===================================== 求序列中的众数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个长度为N的整数序列 (不多于128 ...
- OpenJudge计算概论-计算鞍点
/*======================================================================== 计算鞍点 总时间限制: 1000ms 内存限制: ...
随机推荐
- Python的魔法方法 .
基本行为和属性 __init__(self[,....])构造函数 . 在实例化对象的时候会自动运行 __del__(self)析构函数 . 在对象被回收机制回收的时候会被调用 __str__(sel ...
- 在android的spinner中,实现取VALUE值和TEXT值。 ZT
在android的spinner中,实现取VALUE值和TEXT值. 为了实现在android的 spinner实现取VALUE值和TEXT值,我尝试过好些办法,在网上查的资料,都是说修改适配器, ...
- WPF Step By Step -基础知识介绍
回顾 上一篇我们介绍了WPF基本的知识.并且介绍了WPF与winform传统的cs桌面应用编程模式上的变化,这篇,我们将会对WPF的一些基础的知识做一个简单的介绍,关于这些基础知识更深入的应用则在后续 ...
- 转:DateTime的灵活运用
//2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString(& ...
- buildroot mysql
/******************************************************************** * buildroot mysql * 说明: * 这两天要 ...
- Java 反射 ParameterizedType 参数化类型
/***************************************************************************************** * Java 反射 ...
- JS基础知识(数组)
1,数组 var colors = new Array(); var colors = new Array(20); var colors = new Array(“red”, “blue”, “gr ...
- Eclipse 安装 CDT
最近准备开始重新学C++,先从IDE开始准备起 Ubuntu下安装非常简单: 打开Eclipse: help -> Install new software -> http://down ...
- Linux系统入门学习:在CentOS上安装phpMyAdmin
问题:我正在CentOS上运行一个MySQL/MariaDB服务,并且我想要通过网络接口来用phpMyAdmin来管理数据库.在CentOS上安装phpMyAdmin的最佳方法是什么? phpMyAd ...
- suse linux修改hostname
SUSELinux中修改hostname需要修改以下两个文件 $vi /etc/HOSTNAME $vi /etc/hosts 然后重启系统即可.