1. /*========================================================================
  2. 错误探测
  3. 总时间限制: 1000ms 内存限制: 65536kB
  4. 描述
  5. 给出由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。
  6. 你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。
  7. "改变矩阵元素"的操作定义为0变成1,1变成0。
  8.  
  9. 输入
  10. 包含多个测试数据。每个测试数据有多行,第一行为矩阵的大小n(n < 100),以下n行为矩阵的值。
  11. 输入以0结束。
  12. 输出
  13. 如果矩阵符合条件,则输出OK
  14. 如果矩阵仅改变一个矩阵元素就能符合条件,则输出Change bit (x,y),其中x和y为该元素的坐标
  15. 如果不符合以上两条,输出Corrupt
  16. 样例输入
  17. 4
  18. 1 0 1 0
  19. 0 0 0 0
  20. 1 1 1 1
  21. 0 1 0 1
  22. 4
  23. 1 0 1 0
  24. 0 0 1 0
  25. 1 1 1 1
  26. 0 1 0 1
  27. 4
  28. 1 0 1 0
  29. 0 1 1 0
  30. 1 1 1 1
  31. 0 1 0 1
  32. 0
  33. 样例输出
  34. OK
  35. Change bit (2,3)
  36. Corrupt
  37.  
  38. 分析:
  39. 输入数组时不需存储数组的数据;
  40. 输入时同时计算并用两个一维数组存储每一行、每一列的和 ;
  41. 注意求和前要对两个一维数组清零;
  42. 统计奇数个1的行和奇数个1的列 的数量rowN和colN;
  43. 假如rowN==colN==1说明有且仅有一行和一列含有奇数个1
  44. (这个情况只需要把该行和该列交叉处的值改变一下即可,所以结果就是Change bit (2,3))
  45. 假如 rowN==colN==0,则是OK
  46. 假如是其他情况则是Corrupt
  47.  
  48. 注意:输出案例Change bit (2,3)在左括号'(' 前是有一个空格的。少了这个空格,
  49. 提交时格式错误的。
  50.  
  51. 另外:分析一下输入输出案例第二组数据发现,题目默认数组的下标从1开始。
  52. ==========================================================================*/
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n,i,j,t;
  5. int rowSum[],colSum[];//分别存储每一行、每一列的和
  6. int rowN,colN;//存储有奇数个1的行数、列数
  7. int x,y;
  8. freopen("6.in","r",stdin);
  9. freopen("result.out","w",stdout);
  10. scanf("%d",&n);
  11. while(n!=)
  12. {
  13. for(i=;i<;i++)//清空求和数组
  14. {
  15. rowSum[i]=;
  16. colSum[i]=;
  17. }
  18. //输入的同时计算每一行每一列的和
  19. for(i=;i<n;i++)
  20. {
  21. for(j=;j<n;j++)
  22. {
  23. scanf("%d",&t);
  24. rowSum[i]=rowSum[i]+t;
  25. colSum[j]=colSum[j]+t;
  26. }
  27. }
  28. rowN=;
  29. colN=;
  30. for(i=;i<n;i++)//检测奇数个1的行、奇数个1的列
  31. {
  32. if(rowSum[i]&)
  33. {
  34. rowN++;
  35. x=i;
  36. }
  37. if(colSum[i]&)
  38. {
  39. colN++;
  40. y=i;
  41. }
  42. }
  43. //判断结果
  44. if(rowN==&&colN==)
  45. {
  46. printf("Change bit (%d,%d)\n",x+,y+);
  47. }
  48. else if(rowN==&&colN==)
  49. {
  50. printf("OK\n");
  51. }
  52. else
  53. printf("Corrupt\n");
  54. //输入下一组的阶数
  55. scanf("%d",&n);
  56. }
  57. return ;
  58. }

OpenJudge计算概论-错误探测的更多相关文章

  1. OpenJudge计算概论-取石子游戏

    OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...

  2. Openjudge计算概论——数组逆序重放【递归练习】

    /*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...

  3. OpenJudge计算概论-计算书费

    /*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...

  4. OpenJudge计算概论-最高的分数

    /*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...

  5. OpenJudge计算概论-比饭量【枚举法、信息数字化】

    /*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...

  6. Openjudge计算概论-角谷猜想

    /*===================================== 角谷猜想 总时间限制: 1000ms 内存限制: 65536kB 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数 ...

  7. OpenJudge计算概论-字符串最大跨距

    /*====================================================================== 字符串最大跨距 总时间限制: 1000ms 内存限制: ...

  8. Openjudge计算概论-求序列中的众数

    /*===================================== 求序列中的众数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个长度为N的整数序列 (不多于128 ...

  9. OpenJudge计算概论-计算鞍点

    /*======================================================================== 计算鞍点 总时间限制: 1000ms 内存限制: ...

随机推荐

  1. swift系统学习第三章

    第九节:结构体-sturt //: Playground - noun: a place where people can play import UIKit /* swift学习第九节 结构体:st ...

  2. GCD时间轴

    __block int timeout=60; //倒计时时间            dispatch_queue_t queue = dispatch_get_global_queue(DISPAT ...

  3. 解决DatePicker中Appbar icon缺失

    最近写了个小程序,用到了Microsoft.Phone.Controls.Toolkit里的DatePicker控件,引入以后发现AppBar里两个button的图标不显示.如下图: 们是“完成”和“ ...

  4. C# <%@ Register %>指令

    将别名与命名空间及类名关联起来,以便在自定义服务器控件语法中使用简明的表示法. <%@ register tagprefix="tagprefix" namespace=&q ...

  5. markdown to html

    /************************************************************************* * markdown to html * 说明: ...

  6. js中this和回调方法循环-我们到底能走多远系列(35)

    我们到底能走多远系列(35) 扯淡: 13年最后一个月了,你们在13年初的计划实现了吗?还来得及吗? 请加油~ 主题: 最近一直在写js,遇到了几个问题,可能初入门的时候都会遇到吧,总结下. 例子: ...

  7. CentOS6下搭建OpenVPN服务器

    • OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件.使用OpenVPN可以方便地在家庭.办公场所.住宿酒店等不同网 ...

  8. java的getClass()函数

    Java反射学习 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代 ...

  9. HDU 5944 暴力

    Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)T ...

  10. Qt 串口编程学习1

    1.测试设备:USB 转串口 将RX和TX短接 2.开发环境:windows 1安装Qt for windows 2测试,新建项目编译 出现问题 Cannot find file: C:\Docume ...