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;
}

 

 

 

 

 

 

 

 

 

相关文章
|
6月前
|
存储 算法 NoSQL
数据结构和算法——哈希查找冲突处理方法(开放地址法-线性探测、平方探测、双散列探测、再散列,分离链接法)
数据结构和算法——哈希查找冲突处理方法(开放地址法-线性探测、平方探测、双散列探测、再散列,分离链接法)
228 1
|
7月前
|
机器学习/深度学习 自然语言处理
专治大模型说胡话,精确率100%!华科等提出首个故障token检测/分类方法
【4月更文挑战第29天】华中科技大学等机构研究者提出首个针对大语言模型故障token的检测与分类方法,精确率高达100%,显著提升文本质量。该方法利用上下文信息及注意力机制的神经网络,有效识别语法、语义和事实错误,但在逻辑和风格错误检测上仍有待改进。虽然计算成本高且无法实时干预生成过程,但为优化LLM提供了新途径。[论文链接](https://arxiv.org/abs/2404.09894)
65 1
|
7月前
R语言解释生存分析中危险率和风险率的变化
R语言解释生存分析中危险率和风险率的变化
|
运维 监控 算法
【状态估计】用于描述符 LTI 和 LPV 系统的分析、状态估计和故障检测的算法(Matlab代码实现)
【状态估计】用于描述符 LTI 和 LPV 系统的分析、状态估计和故障检测的算法(Matlab代码实现)
133 0
|
算法 C语言
04【C语言 & 趣味算法】“抓交通肇事犯”问题。算法改进:设置“标识变量”,有效减少循环次数。
04【C语言 & 趣味算法】“抓交通肇事犯”问题。算法改进:设置“标识变量”,有效减少循环次数。
04【C语言 & 趣味算法】“抓交通肇事犯”问题。算法改进:设置“标识变量”,有效减少循环次数。
|
机器学习/深度学习 自然语言处理 数据挖掘
论文赏析[EMNLP18]用控制任务来设计并解释探测任务
论文赏析[EMNLP18]用控制任务来设计并解释探测任务
126 0
论文赏析[EMNLP18]用控制任务来设计并解释探测任务
|
算法 Java C++
算法系统学习-水仙fa数是啥花?(蛮力算法补充)
该系列是基于有一定语言基础(C,C++,Java等等)和基本的数据结构基础进行的算法学习专栏,如果觉得有点吃力 😥 ,建议先了解前提知识再学习喔!本个专栏会将用更容易理解的表达去学习算法,如果在一些表述上存在问题还请各位多多指点
153 0
|
传感器 存储 人工智能
机器的猜想与边界
机器的猜想与边界
118 0
机器的猜想与边界
编程里(通过自己具体的观察从第一次到第二次、第三次观察之间的关系)
编程里(通过自己具体的观察从第一次到第二次、第三次观察之间的关系)
168 0
|
搜索推荐 算法 UED
网站更新频率真的很重要吗?不为人知的算法揭秘
网站更新频率真的很重要吗?不为人知的算法揭秘。很多人认为每天更新文章才能让搜索引擎更加喜欢,但事实上不是这样的,频繁更新更加不利于网站排名
网站更新频率真的很重要吗?不为人知的算法揭秘