1. 试题描述
  2.  
  3. 给定n*n01组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。 你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。 "改变矩阵元素"的操作定义为0变成1或者1变成0
  4.  
  5. 输入格式
  6.  
  7. 输入n + 1行,第1行为矩阵的大小n(0 < n < 100),以下n行为矩阵的每一行的元素,元素之间以一个空格分开。
  8.  
  9. 输出格式
  10.  
  11. 如果矩阵符合条件,则输出OK;如果矩阵仅改变一个矩阵元素就能符合条件,则输出需要改变的元素所在的行号和列号,以一个空格分开。如果不符合以上两条,输出Corrupt
  12.  
  13. 样例输入
  14. 样例输入1
  15. 4
  16. 1 0 1 0
  17. 0 0 0 0
  18. 1 1 1 1
  19. 0 1 0 1
  20.  
  21. 样例输入2
  22. 4
  23. 1 0 1 0
  24. 0 0 1 0
  25. 1 1 1 1
  26. 0 1 0 1
  27.  
  28. 样例输入3
  29. 4
  30. 1 0 1 0
  31. 0 1 1 0
  32. 1 1 1 1
  33. 0 1 0 1
  34.  
  35. 样例输出
  36. 样例输出1
  37. OK
  38.  
  39. 样例输出2
  40. 2 3
  41.  
  42. 样例输出3
  43. Corrupt
  44.  
  45. 其它说明

  

  1. 二维数组//做法;先把每一列每一行遍历一次,同时记录每一行每一列奇数行和列的个数,然后(重要的来了)如果奇数的(行和列)都==0,则输出OK,如果行列都
    ==1,则才输出b[0]和c[0]的值,如果不满足则输出corrupt。因为题目要求的是只能修改一次!

  

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. int a[101][101];
  6. int b[100],c[100];
  7. int n;
  8. int i,j,s1,s2;
  9. while(~scanf("%d",&n))
  10. {
  11.  
  12. b[0]=0;
  13. c[0]=0;
  14. for(i=1,s1=0,s2=0;i<=n;i++)
  15. {
  16. for(j=1;j<=n;j++)
  17. {
  18. scanf("%d",&a[i][j]);
  19. if(a[i][j]==1)
  20. {
  21. b[i]++;//记录第i行的1的个数;
  22. }
  23.  
  24. }
  25. }
  26.  
  27. for(j=1;j<=n;j++)
  28. {
  29. for(i=1;i<=n;i++)
  30. {
  31. if(a[i][j]==1)
  32. {
  33. c[j]++;//记录第j列的1的个数;
  34. }
  35. }
  36. }
  37.  
  38. for(i=1;i<=n;i++)
  39. {
  40. if(b[i]%2!=0)//判断第i行的1的个数是否为奇数;
  41. {
  42. s1++;
  43. b[0]=i;//记录有几个奇数行;下面对于列的判断同理;
  44. }
  45. if(c[i]%2!=0)
  46. {
  47. s2++;
  48. c[0]=i;
  49. }
  50. }
  51. if(s1==0&&s2==0)
  52. printf("OK\n");
  53. else if(s1==1&&s2==1)
  54. {
  55. printf("%d %d\n",b[0],c[0]);
  56. }
  57. else
  58. printf("Corrupt\n");
  59.  
  60. memset(b,0,sizeof(b));
  61. memset(c,0,sizeof(c));
  62.  
  63. }
  64.  
  65. return 0;
  66. }

  

#161: 给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。 你的任务就是检测矩阵是否符合条件的更多相关文章

  1. 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。

    谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数. Google2009华南地 ...

  2. MATLAB:一个K×M的矩阵,第一列是1,其它都是0,从最后一行开始,每循环一次,最后一行的1往右边移一位,移动到末尾后溢出,重新回到最左边,同时上一行的1往右边移一位

    问题:一个K×M的矩阵,第一列是1,其它都是0,从最后一行开始,每循环一次,最后一行的1往右边移一位,移动到末尾后溢出,重新回到最左边,同时上一行的1往右边移一位.上一行溢出时,上上一行的1移动一位, ...

  3. Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据

    Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1. 配置条件字段@Conditional 1 1 2. 2. 配置条件字段 ...

  4. 在行列都排好序的矩阵中找数 【题目】 给定一个有N*M的整型矩阵matrix和一个整数K, matrix的每一行和每一 列都是排好序的。实现一个函数,判断K 是否在matrix中。 例如: 0 1 2 5 2 3 4 7 4 4 4 8 5 7 7 9 如果K为7,返回true;如果K为6,返 回false。 【要求】 时间复杂度为O(N+M),额外空间复杂度为O(1)。

    从对角考虑 package my_basic.class_3; /** * 从对角开始 */ public class Code_09_FindNumInSortedMatrix { public s ...

  5. js--数组的every()和some()方法检测数组是否满足条件的使用介绍

    前言 阅读本文之前先来思考一个问题,如何如实现判断一个数组中是否存在满足条件的元素,如何去判断数组中是否全部元素都满足判断条件,这里可能能想到使用for循环遍历数组,if()判断每一项是否符合条件,同 ...

  6. 符合阿里巴巴代码规范的checkstyle检测文件

    一.安装与简介 eclipse和idea都有对应的插件,找到插件安装界面.搜索checkstyle,点击安装后,重启IDE即可.(网上有很多安装教程,就不重复制造轮子了) 二.导入配置文件 在chec ...

  7. jquery实时监测手机号是否符合规则,并根据手机号检测结果将提交按钮设为不同状态

    功能: 输入手机号,实时判断手机号输入的是否符合规则: 如果不合规则,则提交按钮为禁用状态,手机号信息不可提交,按钮显示灰色背景: 如果符合规则,则可提交所输入的手机号信息,并将按钮背景设成红色. 代 ...

  8. 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。

    // test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  9. 等价于n*n的矩阵,填写0,1,要求每行每列的都有偶数个1 (没有1也是偶数个),问有多少种方法。

    #define N 4 /* * 公式: * f(n) = 2^((n - 1) ^2) */ int calWays(int n) { int mutiNum = (n - 1) * (n - 1) ...

随机推荐

  1. centos7下zabbix4.0配置磁盘IO监控

    一:准备 1.1:安装sysstat yum -y install sysstat 1.2:安装zabbix-get yum install -y zabbix-get.x86_64 1.3:iost ...

  2. ES6新特性,对象的快速创建

    //es6对象快速赋值 //es5对象赋值 var name="xiaoming"; var age=18 var person={ name:name, age:age } co ...

  3. python IDE PyCharm的安装

    首先去Pycharm官网,或者直接输入网址:http://www.jetbrains.com/pycharm/download  : 选择Windows系统 免费版本下载: 双击下载的安装包,进行安装 ...

  4. LAMP架构(二)

    第十八次课 LAMP架构(二) 目录 一.Apache默认虚拟主机 二.Apache用户认证 三.域名跳转 四.Apache访问日志 五.访问日志不记录静态文件 六.访问日志切割 七.静态元素过期时间 ...

  5. Linux下的5种I/O模型(转)

    Linux下的五种I/O模型: l         阻塞I/O l         非阻塞I/O l         I/O复用(select.poll.epoll) l         信号驱动I/ ...

  6. JavaScript实现本地图片上传前进行裁剪预览

    本项目支持IE8+,测试环境IE8,IE9,IE10,IE11,Chrome,FireFox测试通过 另:本项目并不支持Vue,React等,也不建议,引入JQuery和Vue.React本身提倡的开 ...

  7. C#获取文件目录

    Form1.cs using System;using System.Collections.Generic;using System.ComponentModel;using System.Data ...

  8. CSS 隐藏ul

    老师要求只能用css做出覆盖ul时显示ul,之前一直在试   [  display:none  display:block ]后来发现一直是闪烁的状态 不能实现消失 然后就试用了透明度,一下就可以了 ...

  9. C#中字符串大小比较函数--CompareTo与Compare方法(需要完善补充)

    字符串比较的原理是什么? 原理: 从两个字符串的第一个字符开始逐个进行比较(按字符的ASCII值进行大小比较),直到出现不同的字符或遇到‘\0’为止. 如果全部字符都相同,就认为两字符串相等,返回0: ...

  10. [转]C++11 左值、右值、右值引用详解

    https://blog.csdn.net/hyman_yx/article/details/52044632 左值.右值 在C++11中所有的值必属于左值.右值两者之一,右值又可以细分为纯右值.将亡 ...