1186:出现次数超过一半的数

传送门:http://ybt.ssoier.cn:8088/problem_show.php?pid=1186

1186:出现次数超过一半的数


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 5616     通过数: 2614

【题目描述】

给出一个含有n(0 < n ≤ 1000)个整数的数组,请找出其中出现次数超过一半的数。数组中的数大于-50且小于50。

【输入】

第一行包含一个整数n,表示数组大小;

第二行包含n个整数,分别是数组中的每个元素,相邻两个元素之间用单个空格隔开。

【输出】

如果存在这样的数,输出这个数;否则输出no。

【输入样例】

3
1 2 2

【输出样例】

2

#include<iostream>
using namespace std;
#define N 310
int n,a[N],ci;
bool ans=false;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>ci;
        a[ci+100]++;
    }
    for(int i=1;i<N;i++)
    {
        if(a[i]>(n/2))cout<<i-100<<endl,ans=true;
    }
    if(!ans)cout<<"no
";
}
原文地址:https://www.cnblogs.com/jzxnl/p/11104950.html