题目链接:P6882

这题是作业实锤了,但是比赛时我差点把计数思想忘记了,2分20秒至少有30秒在想方法。。。

好啦,言归正传,现在开始讲方法——

1、创建一个105的数组,因为C++不能有负数的下标,不像python,负数下标还能检测倒数第几的,所以根据题目的数据来看,我们还要把数加上50才能放进数组里,让其出现次数增加1。

2、遍历数组,只要一个元素出现次数超过总数的一半之后,便立刻输出它减50后的值,然后结束程序。

3、如果遍历完毕仍然没结束的话,输出no。

考点:

1、计数思想

2、遍历数组的能力

3、循环与条件

代码:

#include<bits/stdc++.h>
using namespace std;
// 变量特别是数组尽量要定义在函数外
int a[105], num, n;
int main(){
    cin >> n;
    for(int i = 0;i < n;i++){
        cin >> num;
        // 加上50后数组值递增
        a[num + 50]++;
    }
    // 遍历数组,查找元素,判断条件
    for(int i = 0;i < 105;i++){
        if(a[i] > (n / 2)){
            cout << (i - 50);
            return 0;
        }
    }
    cout << "no";
    return 0;
}