题目链接:kuangbin带你飞:基础dp专题hdu1029
这道题放在了基础dp专题,我觉得就是简单的C++的stl运用。
题意就是求出一个数列中出现次数大于等于(N+1)/2的数。用map记录每个数出现的次数,依次遍历map即可。
ac代码:
#include <bits/stdc++.h>
using namespace std;
map<int, int>mp;
int N;
int main(void)
{
while(scanf("%d", &N)!=EOF)
{
mp.clear();
int n=(N+1)/2;
for(int i=0; i<N; i++)
{
int x;
scanf("%d", &x);
mp[x]++;
}
map<int, int>::iterator it;
for(it=mp.begin(); it!=mp.end(); it++)
{
if(it->second>=n)
{
printf("%d\n", it->first);
break;
}
}
}
return 0;
}