OpenJudge计算概论-错误探测

简介: /*======================================================================== 错误探测 总时间限制: 1000ms 内存限制: 65536kB 描述 给出由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。
/*========================================================================
错误探测
总时间限制: 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[100],colSum[100];//分别存储每一行、每一列的和 
    int rowN,colN;//存储有奇数个1的行数、列数 
    int x,y;
    freopen("6.in","r",stdin);
    freopen("result.out","w",stdout);
    scanf("%d",&n);
    while(n!=0)
    {
        for(i=0;i<100;i++)//清空求和数组 
        {
            rowSum[i]=0;
            colSum[i]=0;
        }
        //输入的同时计算每一行每一列的和 
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                scanf("%d",&t);
                rowSum[i]=rowSum[i]+t;
                colSum[j]=colSum[j]+t; 
            }
        }
        rowN=0;
        colN=0;
        for(i=0;i<n;i++)//检测奇数个1的行、奇数个1的列 
        {
            if(rowSum[i]&1)
            {
                rowN++;
                x=i;
            }
            if(colSum[i]&1)
            {
                colN++;
                y=i;
            }
        }
        //判断结果 
        if(rowN==1&&colN==1)
        {
            printf("Change bit (%d,%d)\n",x+1,y+1);
        }
        else if(rowN==0&&colN==0)
        {
            printf("OK\n");
        }
        else 
            printf("Corrupt\n");
        //输入下一组的阶数 
        scanf("%d",&n);
    }
    return 0;
}

 

 

 

 

 

 

 

 

 

相关文章
|
C++
信奥赛一本通1122:计算鞍点
【题目描述】 给定一个5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。 例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。 11 3 5 6 9 12 4 7 8 10 10 5 6 9 11 8 6 4 7 2 15 10 11 20 25
624 0
|
机器学习/深度学习 Windows
Openjudge计算概论-角谷猜想
/*===================================== 角谷猜想 总时间限制: 1000ms 内存限制: 65536kB 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。
925 0
OpenJudge计算概论-字符串最大跨距
/*====================================================================== 字符串最大跨距 总时间限制: 1000ms 内存限制: 65536kB 描述 有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10,想检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在 S中互不交叉(即,S1的右边界点在S2的左边界点的左侧)。
1354 0
|
Java
OpenJudge计算概论-配对碱基链
/*===================================== 配对碱基链 总时间限制: 1000ms 内存限制: 65536kB 描述 脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。
1300 0
|
算法 存储
OpenJudge计算概论-分配病房
/*===================================== 分配病房 总时间限制: 1000ms 内存限制: 65536kB 描述 某个科室的病房分为重症和普通,只有当病人的疾病严重程度超过了入住重症病房的最低严重值,才可以安排入住重症病房。
1028 0
|
人工智能
OpenJudge计算概论-寻找山顶
/*===================================== 寻找山顶 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个m×n的山地上,已知每个地块的平均高程,请求出所有山顶所在的地块(所谓山顶,就是其地块平均高程不比其上下左右相邻的四个地块每个地块的平均高程小的地方)。
859 0
|
ice
OpenJudge计算概论-文字排版
/*====================================================================== 文字排版 总时间限制: 1000ms 内存限制: 65536kB 描述 给一段英文短文,单词之间以空格分隔(每个单词应包括其前后紧邻的标点符号)。
861 0
|
人工智能
OpenJudge计算概论-计算鞍点
/*======================================================================== 计算鞍点 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个二维 (5*5)数组,每行只有一个最大值,每列只有一个最小值。
1198 0
|
存储 BI
OpenJudge计算概论-最长平台
/*=========================================================== 最长平台 总时间限制: 1000ms 内存限制: 65536kB 描述 已知一个已经从小到大排序的数组,这个数组的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸。
1018 0
OpenJudge计算概论-与7无关的数
/*========================================================== 与7无关的数 总时间限制: 1000ms 内存限制: 65536kB 描述 一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数.
1332 0