统计频率----初始条件的设置

给定一个n,输入n个数,输出这n个数中出现频率最多的数的值及出现频率。频率相同时,取较大值。

这里用map可以轻松解决。但是wa了无数次。。。。。

原来是初值设置错了。0x3fffffff可以做为正数的INF,但是-0x3fffffff不行,,,,-0xfffffff则是1,不明觉吊。

改了初始的key和val就过了

#include<bits/stdc++.h>
using namespace std;
int main()
{
    map<int,int> a;
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int tmp;
        cin>>tmp;
        a[tmp]++;
    }

    map<int,int>::iterator it;
    int key=a.begin()->first;
    int val=a.begin()->second;
    for(it=a.begin();it!=a.end();it++)
    {
        //cout<<it->first<<endl;
        if(it->second>=val)
        {
            val=max(val,it->second);

            if(it->second==val)
                key=max(key,it->first);
            else
                key=it->first;
        }
    }
    printf("%d %d
",key,val);
    return 0;
}
原文地址:https://www.cnblogs.com/superxuezhazha/p/6393750.html