[恢]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 ;
}



转载于:https://www.cnblogs.com/lzsz1212/archive/2012/01/06/2315375.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值