【模拟与枚举】
#include<cstdio>
#include<string>
using namespace std;
int main()
{
int n,i;
int t;
int cnt;
int result;
while(scanf("%d",&n)!=EOF)
{
cnt=0;
for(i=0;i<n;i++)
{
scanf("%d",&t);
if(cnt==0)
{
cnt=1;
result=t;
}
else
{
if(t==result)cnt++;
else cnt--;
}
}
printf("%d\n",result);
}
return 0;
}
#include <cstdio>
#include<cstring>
using namespace std;
int sum[1000005];
int main()
{
int n,i,j,cou,res,t;
while(scanf("%d",&n)!=EOF)
{
cou=0;res=0;t=n;
memset(sum,0,sizeof(sum));
while(n--)
{
scanf("%d",&j);
sum[j]++;
}
for(i=0;i<1000000;i++)
{
if(sum[i]>cou)
{cou=sum[i];res=i;}
}
if(cou>=(t+1)/2) printf("%d\n",res);
}
return 0;
}
两个不同思想的代码 但是都能ac 我用的是第二个代码 第一个代码总感觉不对
如果样例是
13
1 21 1 2 2 3 2 1 4 3 3 4
那么结果 分别是 试一下吧 嘿嘿