POJ 2260(模拟&贪心_B题)解题报告

Posted caomingpei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 2260(模拟&贪心_B题)解题报告相关的知识,希望对你有一定的参考价值。

题目链接:http://poj.org/problem?id=2260

--------------------------------------------------------

题意:一种校验码,查出一位的比特差错。

思路:校验码的原理与思路很明确,计算出每行每列的和,找出该和为奇数的点,该点所对应的x,y坐标即为所求。超过两位输出"Corrupt"。

代码:

 

技术分享图片
#include<cstdio>
#include<iostream>
using namespace std;
int N=0;
int main(void){
    while(scanf("%d",&N)){
        if(N==0) break;
    const int n =N;
    int a[n][n];
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            scanf("%d",&a[i][j]);
        //    printf("%d",a[i][j]);
        }
    }

    int L[n];
    int H[n];
    for(int i=0;i<n;i++){
        int suml = 0;
        for(int j=0;j<n;j++){
            suml+=a[i][j];
        }
        L[i] = suml;
        //printf("%d",L[i]);
    }
    
    for(int i=0;i<n;i++){
        int sumh=0;
        for(int j=0;j<n;j++){
            sumh +=a[j][i];
        }
        H[i] =sumh; 
        //printf("%d",H[i]);
    }
    
    int Lf =-1;
    int Hf =-1;
    int cl=0;
    int ch=0;
    for(int i=0;i<n;i++){
        if(L[i]%2==1){    
            Lf =i;
            cl++;
        }
        if(H[i]%2==1){
            Hf =i;
            ch++;
        }
    }
    if(cl>1||ch>1){
        printf("Corrupt\n");
    }else if(Lf==-1&&Hf==-1){
        printf("OK\n");
    }else{
        printf("Change bit (%d,%d)\n",Lf+1,Hf+1);
    }
    
    
    }
    return 0;
}
View Code

 

以上是关于POJ 2260(模拟&贪心_B题)解题报告的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces 825B(模拟&贪心_D题)解题报告

POJ 1458(DP初步_B题)解题报告

POJ3614 Sunscreen 贪心入门

HDU 2141(二分&三分 _B题)解题报告

2021.8.23提高B组模拟12T1 + P2945 [USACO09MAR]Sand Castle S (贪心)

2021.8.23提高B组模拟12T1 + P2945 [USACO09MAR]Sand Castle S (贪心)