[恢]hdu 1029

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 ;
}



posted @ 2012-01-06 23:51  Seraph2012  阅读(175)  评论(0编辑  收藏  举报