题目地址:点击打开链接
思路:水题一道,结果题没看清,输出的小细节也没注意,结果wrong了
错误代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[10010];
int main()
{
int n,i,x;
while(scanf("%d",&n) != EOF)
{
memset(a,0,sizeof(a));
for(i=0; i<n; i++)//标号不是到n而是到0<=ai<10000注意有0
{
scanf("%d",&x);
a[x]++;
}
for(i=1; i<=n; i++)
{
if(a[i] > n/2)
{
printf("%d\n",i);
break;
}
}
if(i > n)
printf("-1\n");
}
return 0;
}
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[10010];
int main()
{
int n,i,x;
while(scanf("%d",&n) != EOF)
{
memset(a,0,sizeof(a));
for(i=0; i<n; i++)
{
scanf("%d",&x);
a[x]++;
}
for(i=0; i<10000; i++)
{
if(a[i] > n/2)
{
printf("%d\n",i);
break;
}
}
if(i >= 10000)//注意有等于,不然永远也不可能输出-1
printf("-1\n");
}
return 0;
}