2011-12-27 05:21:34
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1029
题意:给n(奇数)个数字,求哪个数出现了至少(n+1)/2次。
mark:利用hash。
代码:
# include <stdio.h>
# include <string.h>
# define MOD 999997
int tab[MOD][2] ;
int ans, max_num ;
int hash(int num)
{
int idx = num % MOD ;
while (tab[idx][1] != num && tab[idx][1] != 0)
idx++ ;
tab[idx][0] ++ ;
tab[idx][1] = num ;
if (max_num < tab[idx][0])
{
max_num = tab[idx][0] ;
ans = num ;
}
}
int main ()
{
int n, num ;
while (~scanf ("%d", &n))
{
max_num = ans = 0 ;
memset (tab, 0, sizeof(tab)) ;
while (n--)
{
scanf ("%d", &num) ;
hash(num) ;
}
printf ("%d\n", ans) ;
}
return 0 ;
}