当前位置: 首页 > news >正文

CCF NOI1048 检测矩阵

问题链接: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 100

int 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;
}




转载于:https://www.cnblogs.com/tigerisland/p/7563901.html

相关文章:

  • IndexedDB
  • pl/sql 笔记之存储过程、函数、包、触发器(下)
  • mysql的库和表相关操作
  • Exchange 2010升级sp2报错
  • 【Cocosd2d-x CCMenu菜单之二】
  • ISO8583开发注意事项和心得体会
  • iOS 相册和网络图片的存取
  • beanshell获取响应结果数据
  • XYGame-网络同步3-防作弊
  • 红黑树 - C++代码实现
  • 自己定义iOS上双击Home键图切换
  • 数据预测的步骤
  • Elasticsearch学习笔记-04.2删除文档
  • 磁珠与电感的区别,看了就灰常明白了
  • Spring Quartz 集群动态创建任务
  • ➹使用webpack配置多页面应用(MPA)
  • 230. Kth Smallest Element in a BST
  • Intervention/image 图片处理扩展包的安装和使用
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • leetcode-27. Remove Element
  • Protobuf3语言指南
  • Vue实战(四)登录/注册页的实现
  • Wamp集成环境 添加PHP的新版本
  • Xmanager 远程桌面 CentOS 7
  • XML已死 ?
  • 测试开发系类之接口自动化测试
  • 浮现式设计
  • 构建二叉树进行数值数组的去重及优化
  • 警报:线上事故之CountDownLatch的威力
  • 前言-如何学习区块链
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # 计算机视觉入门
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • (11)MSP430F5529 定时器B
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (二)Eureka服务搭建,服务注册,服务发现
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET 的程序集加载上下文
  • .NET关于 跳过SSL中遇到的问题
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .NET中使用Protobuffer 实现序列化和反序列化
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [BeginCTF]真龙之力
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)