CCF NOI1048 检测矩阵
来源:互联网 发布:js对象转化为字符串 编辑:程序博客网 时间:2024/06/06 01:57
问题链接:CCF NOI1048 检测矩阵。
时间限制: 1000 ms 空间限制: 262144 KB
题目描述
给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。
你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。
"改变矩阵元素"的操作定义为0变成1或者1变成0。
输入
输入n + 1行,第1行为矩阵的大小n(0 < n < 100),以下n行为矩阵的每一行的元素,元素之间以一个空格分开。
输出
如果矩阵符合条件,则输出OK;
如果矩阵仅改变一个矩阵元素就能符合条件,则输出需要改变的元素所在的行号和列号,以一个空格分开。
如果不符合以上两条,输出Corrupt。
样例输入
4
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
样例输出
OK
数据范围限制
问题分析
行列同时进行奇偶校验,最后再进行判定。
程序说明
(略)
- 虽然题意中给的是常量的矩阵大小,但是用宏来定义一个符号常量更为合理。
参考链接:(略)。
100分通过的C语言程序:
#include <stdio.h>#include <string.h>#define N 100int a[N][N];int rowflag[N], colflag[N];int main(void){ int n, i, j; scanf("%d", &n); for(i=0; i<n; i++) for(j=0; j<n; j++) scanf("%d", &a[i][j]); // 设置初始值 memset(rowflag, 0, sizeof(rowflag)); memset(colflag, 0, sizeof(colflag)); // 行和列1的个数奇偶设置 for(i=0; i<n; i++) for(j=0; j<n; j++) if(a[i][j] == 1) { rowflag[i] = 1 - rowflag[i]; colflag[j] = 1 - colflag[j]; } // 判定和输出结果 int sumrow=0, sumcol=0, row, col; for(i=0; i<n; i++) { sumrow += rowflag[i]; sumcol += colflag[i]; if(rowflag[i]) row = i; if(colflag[i]) col = i; } if(sumrow == 0 && sumcol == 0) printf("OK\n"); else if(sumrow == 1 && sumcol == 1) { printf("%d %d\n", row + 1, col + 1); } else printf("Corrupt\n"); return 0;}
1 0
- CCF NOI1048 检测矩阵
- CCF NOI1060 雷同检测
- CCF-201512-5 矩阵
- CCF NOI1050 矩阵乘法
- CCF试题之矩阵旋转
- CCF之矩阵(java)
- CCF之最大的矩阵(java)
- CCF NOI1067 最匹配的矩阵
- CCF考试Java试题--旋转矩阵
- CCF 201512-5矩阵 (40分)
- 矩阵键盘的检测
- 矩阵键盘的检测
- CCF 201512-5 矩阵 (矩阵快速幂)
- ccf
- CCF
- ccf
- VHDL实现矩阵键盘检测
- 二微矩阵碰撞检测
- JAVA代码注释规范
- 随机生成数字放入数组(难度系数:1颗星)
- 简单博弈
- mac 安装 redis
- 糖果问题的一种解法
- CCF NOI1048 检测矩阵
- 用提高效率的暴力法求3000以内的素数
- 将tslib-1.4移植到Mini2440开发板
- 求一个数组中的和为任意一个数的两个元素
- 换零钱
- 跟我学JavaScript--条件语句,循环语句,break语句,continue语句
- hbase参数配置优化
- Hbase查询速度快的缘由
- hbase的内容查询