• 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
    ");
        else if(sumrow == 1 && sumcol == 1) {
            printf("%d %d
    ", row + 1, col + 1);
        } else
            printf("Corrupt
    ");
    
        return 0;
    }




  • 相关阅读:
    java 可变參数列表
    Java -Xms -Xmx -Xss -XX:MaxNewSize -XX:MaxPermSize含义记录
    hdu 4939
    什么是堆和栈,它们在哪儿?
    PPAPI插件与浏览器的通信
    Java&amp;Xml教程(十一)JAXB实现XML与Java对象转换
    Heavy Transportation
    Python学习笔记-小记
    C/C++知识要点5——智能指针原理及自己定义实现
    小米2S电池电量用尽充电无法开机解决方法
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563901.html
Copyright © 2020-2023  润新知