给定一个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; }