1126: 布尔矩阵的奇偶性

题目描述
一个布尔方阵具有奇偶均势特性,当且仅当 每行、每列总和为偶数,即包含偶数个1。如下面这个4*4的矩阵就具有奇偶均势特性:
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
编写程序,读入一个n阶方阵并检查它是否具有奇偶均势特性。如果没有,你的程序应当再检查一下它是否可以通过修改一位(把0改为1,把1改为0)来使它具有奇偶均势特性;如果不可能,这个矩阵就被认为是破坏了。

输入
第一行是一个整数n ( 0< n < 100 ),代表该方阵的阶数。然后输入n 行,每行n个整数(0或1)。
输出
如果矩阵是布尔矩阵,输出“OK”;如果能通过只修改该矩阵中的一位来使它成为布尔矩阵,则输出“Change bit(i,j)”,这里i和j是被修改的元素的行与列(行,列号从0开始);否则,输出“Corrupt”。
样例输入 Copy
4
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
样例输出 Copy
OK

代码

#include<stdio.h>
int main()
{int i,j,n,a[100][100],sum,x,y,flag1=0,flag2=0;scanf("%d",&n);//输入矩阵for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);//判断其每行总和是否为偶数for(i=0;i<n;i++){sum=0;for(j=0;j<n;j++)sum+=a[i][j];if(sum%2!=0){flag1++;   //计算共有多少行的一行之和不为偶数,大于1的话说明无奇偶均势性 x=i;    //应该修改的行的位置,在flag1大于1时无意义 }  }
//判断每列之和是否为偶数for(i=0;i<n;i++){sum=0;for(j=0;j<n;j++)sum+=a[j][i];    if(sum%2!=0){flag2++;    //计算共有多少列的一列之和不为偶数,大于1的话说明无奇偶均势性y=i;    //应该修改的列的位置,在flag2大于1时无意义 }}if(flag1==0&&flag2==0)    //说明每行每列各自总和均为偶数 printf("OK\n");  else if(flag1==1&&flag2==1)   //有一行、一列的总和不为偶数 ,此时可修改 printf("Change bit(%d,%d)\n",x,y);else    printf("Corrupt\n");return 0;
}

说明
此题当每行每列总和均为偶数时说明其为布尔矩阵,

经发现可知只有在只存在一行之和不为偶数,一列之和不为偶数这种情况时,矩阵才能被修改为布尔矩阵,并且修改的位置(x,y)就是那一行总和不为偶数的行坐标x和那一列之和不为偶数的列坐标y。

除了上述情况外,若存在着多行或多列之和不为偶数的情况,均无法通过修改一个位置使其成为布尔矩阵。

因此,在求每行之和的循环中设置一个变量flag1,计算一行之和不为偶数的数量,并让x的值等于当前一行之和不为偶数的行坐标,
在求每列之和的循环中设置一个变量flag2,计算一列之和不为偶数的数量,并让y的值等于当前一列之和不为偶数的列坐标,

flag1=0并且flag2=0 ,说明其每行每列之和均为偶数,输出OK
flag1=1并且flag2=1,说明可以通过修改成为布尔矩阵,修改位置为(x,y)

其他的flag1与flag2的值均说明无法修改成为布尔矩阵。

zzulioj1126: 布尔矩阵的奇偶性相关推荐

  1. ZZULIOJ 1126: 布尔矩阵的奇偶性

    布尔矩阵的奇偶性 题目描述 一个布尔方阵具有奇偶均势特性,当且仅当 每行.每列总和为偶数,即包含偶数个1.如下面这个4*4的矩阵就具有奇偶均势特性: 1 0 1 0 0 0 0 0 1 1 1 1 0 ...

  2. Tricks(四十七)—— 布尔矩阵(0-1矩阵)取反

    假定 X 是一个 0-1 元素构成的布尔矩阵,则对其取反,0 变成 1,1 变为 0(True 变为 False,False 变成 True),只需要一步简单的操作: Y = (X == False)

  3. java布尔矩阵程序_Java编程实现邻接矩阵表示稠密图代码示例

    我们知道,要表示结点,我们可以用一个一维数组来表示,然而对于结点和结点之间的关系,则无法简单地用一维数组来表示了,我们可以用二维数组来表示,也就是一个矩阵形式的表示方法. 我们假设A是这个二维数组,那 ...

  4. 布尔矩阵分解 代码实现(BMF)--MEBF论文阅读

    文章目录 关于布尔矩阵分解 布尔矩阵分解的思路 MEBF思路 MEBF算法流程及分析 代码实现 布尔矩阵分解测试 参考文献 关于布尔矩阵分解 最近在做有关布尔矩阵分解方面的研究,因为自己的方向需要,找 ...

  5. 布尔矩阵与自动推荐系统

    Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4        经常上当当网购书的朋友都知道,当选择了几本书,放入购物车中 ...

  6. 布尔矩阵与个性化推荐系统(原创)

    经常上当当网购书的朋友都知道,当选择了几本书,放入购物车中,然后系统就会推荐你,购买了这两本书的用户还购买了什么书,淘宝等购物网站也有类似的功能. 在推荐系统中还有一个经典的案例,具体我记得不太清楚了 ...

  7. HAUTOJ 1100~1200题题解

    1100: 求组合数(函数专题) C #include<stdio.h> long long int t=1,a,b; long fact(long n) {t = 1;for (int ...

  8. ZZULIOJ 1114-1130 数组专题 参考代码

    一共17道题 下面代码供参考 每题前面标的有题号 1114 逆序 1115 数组最小值 1116 删除元素 1117 查找数组元素 1118 数列有序 1119 一维数组排序 1120 最值交换 11 ...

  9. 郑州轻工业大学OJ合集(C语言)【正在整理】

    代码仅供参考,为作者初次学习C语言时所写 以下代码均未添加注释 ZZULIOJ平台:http://acm.zzuli.edu.cn/ 学习编程语言,最忌眼高手低. copy后,不要直接粘到编译器里面, ...

最新文章

  1. 如何创建一个最小的区块链
  2. 开源框架 ImageLoader +ListView+GridView+RecyclerView 浅解
  3. 【解决方案】chrome打开新标签页自动打开chrome://newtab并且跳转到谷歌香港
  4. UPS及蓄电池的运行管理、维护操作和常见故障处理
  5. linux之vim/vi快速复制多行内容的快捷键
  6. 关键字驱动测试示例_带有示例的False关键字
  7. Centos7安装mysql社区版
  8. 浙大1002Fire Net心得
  9. ios 代码截屏模糊问题解决办法
  10. python plt 保存为emf图像
  11. python中的zip函数详解_python中的 zip函数详解
  12. ACL'21 | 对比学习论文一句话总结
  13. 数据呈现—ListView x Adapter
  14. Atitit.收银系统模块架构attilax 总结
  15. excel自动调整列宽_Java 设置Excel自适应行高、列宽
  16. jsencrypt php,js加密php解密(一)
  17. 查看计算机温度指令,怎么查看电脑温度|查看电脑温度的三种方式
  18. 事件监听(窗口关闭、输入框事件、计算器、画笔、鼠标、窗口、键盘)
  19. 高分一号WFV影像云检测工具(免费)
  20. Java程序员情人节_关于程序员:一封来自Java程序员的情书

热门文章

  1. C#毕业设计——基于C#+asp.net+SQL Server的服装连锁店管理系统设计与实现(毕业论文+程序源码)——服装连锁店管理系统
  2. vmware此应用可能无法正常工作
  3. 老北京人推荐的50个秘境景点
  4. 服务器提示无法显示url,win7系统中ie浏览器无法浏览网页提示您所请求的网址(url)无法获取如何解决...
  5. JAVA计算机毕业设计宠物领养饲养交流管理平台Mybatis+系统+数据库+调试部署
  6. 联想E530c 出现开机声音卡顿的问题
  7. 实现天猫查看物流功能
  8. android文件备份工具,5种方式轻松备份Android应用程序和应用程序数据
  9. FPV救援四足机器人设计(2)
  10. 静态内部类 和 内部类