zzulioj1126: 布尔矩阵的奇偶性
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: 布尔矩阵的奇偶性相关推荐
- ZZULIOJ 1126: 布尔矩阵的奇偶性
布尔矩阵的奇偶性 题目描述 一个布尔方阵具有奇偶均势特性,当且仅当 每行.每列总和为偶数,即包含偶数个1.如下面这个4*4的矩阵就具有奇偶均势特性: 1 0 1 0 0 0 0 0 1 1 1 1 0 ...
- Tricks(四十七)—— 布尔矩阵(0-1矩阵)取反
假定 X 是一个 0-1 元素构成的布尔矩阵,则对其取反,0 变成 1,1 变为 0(True 变为 False,False 变成 True),只需要一步简单的操作: Y = (X == False)
- java布尔矩阵程序_Java编程实现邻接矩阵表示稠密图代码示例
我们知道,要表示结点,我们可以用一个一维数组来表示,然而对于结点和结点之间的关系,则无法简单地用一维数组来表示了,我们可以用二维数组来表示,也就是一个矩阵形式的表示方法. 我们假设A是这个二维数组,那 ...
- 布尔矩阵分解 代码实现(BMF)--MEBF论文阅读
文章目录 关于布尔矩阵分解 布尔矩阵分解的思路 MEBF思路 MEBF算法流程及分析 代码实现 布尔矩阵分解测试 参考文献 关于布尔矩阵分解 最近在做有关布尔矩阵分解方面的研究,因为自己的方向需要,找 ...
- 布尔矩阵与自动推荐系统
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 经常上当当网购书的朋友都知道,当选择了几本书,放入购物车中 ...
- 布尔矩阵与个性化推荐系统(原创)
经常上当当网购书的朋友都知道,当选择了几本书,放入购物车中,然后系统就会推荐你,购买了这两本书的用户还购买了什么书,淘宝等购物网站也有类似的功能. 在推荐系统中还有一个经典的案例,具体我记得不太清楚了 ...
- HAUTOJ 1100~1200题题解
1100: 求组合数(函数专题) C #include<stdio.h> long long int t=1,a,b; long fact(long n) {t = 1;for (int ...
- ZZULIOJ 1114-1130 数组专题 参考代码
一共17道题 下面代码供参考 每题前面标的有题号 1114 逆序 1115 数组最小值 1116 删除元素 1117 查找数组元素 1118 数列有序 1119 一维数组排序 1120 最值交换 11 ...
- 郑州轻工业大学OJ合集(C语言)【正在整理】
代码仅供参考,为作者初次学习C语言时所写 以下代码均未添加注释 ZZULIOJ平台:http://acm.zzuli.edu.cn/ 学习编程语言,最忌眼高手低. copy后,不要直接粘到编译器里面, ...
最新文章
- 如何创建一个最小的区块链
- 开源框架 ImageLoader +ListView+GridView+RecyclerView 浅解
- 【解决方案】chrome打开新标签页自动打开chrome://newtab并且跳转到谷歌香港
- UPS及蓄电池的运行管理、维护操作和常见故障处理
- linux之vim/vi快速复制多行内容的快捷键
- 关键字驱动测试示例_带有示例的False关键字
- Centos7安装mysql社区版
- 浙大1002Fire Net心得
- ios 代码截屏模糊问题解决办法
- python plt 保存为emf图像
- python中的zip函数详解_python中的 zip函数详解
- ACL'21 | 对比学习论文一句话总结
- 数据呈现—ListView x Adapter
- Atitit.收银系统模块架构attilax 总结
- excel自动调整列宽_Java 设置Excel自适应行高、列宽
- jsencrypt php,js加密php解密(一)
- 查看计算机温度指令,怎么查看电脑温度|查看电脑温度的三种方式
- 事件监听(窗口关闭、输入框事件、计算器、画笔、鼠标、窗口、键盘)
- 高分一号WFV影像云检测工具(免费)
- Java程序员情人节_关于程序员:一封来自Java程序员的情书
热门文章
- C#毕业设计——基于C#+asp.net+SQL Server的服装连锁店管理系统设计与实现(毕业论文+程序源码)——服装连锁店管理系统
- vmware此应用可能无法正常工作
- 老北京人推荐的50个秘境景点
- 服务器提示无法显示url,win7系统中ie浏览器无法浏览网页提示您所请求的网址(url)无法获取如何解决...
- JAVA计算机毕业设计宠物领养饲养交流管理平台Mybatis+系统+数据库+调试部署
- 联想E530c 出现开机声音卡顿的问题
- 实现天猫查看物流功能
- android文件备份工具,5种方式轻松备份Android应用程序和应用程序数据
- FPV救援四足机器人设计(2)
- 静态内部类 和 内部类