PAT A1054 The Dominant Color (20分)

这是过半数数字问题,由于条件给出最多的数字超过半数,所以使用不同数字相消可以快速得到答案
当然如果想不到,使用map<int,int>作为数字出现次数的记录也可以,最大的map数组不过800*600/2 = 240000,可以接受但是需要遍历所有map,更新最大数

#include<cstdio>

using namespace std;

int main(){
    int count = 0;
    int curNum;
    int maxNum;
    int m,n;
    scanf("%d%d",&m,&n);
    for(int i = 0;i<=n;i++ ){
        for(int j = 0;j <= m;j++){
            scanf("%d",&curNum);
            if(count==0) maxNum = curNum;
            if(maxNum == curNum){ 
                count++;
            }else{
                count--;
            } 
        }
    }
    printf("%d",maxNum);
    return 0;
}
原文地址:https://www.cnblogs.com/shuibeng/p/13584114.html