Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
大概是冲突吧....30位的长度In Reply To:哪位大哥能帮我看看,是我的Hash用得不对还是这题不能用hash Posted by:bupt_09 at 2006-08-09 20:45:08 > #include<stdio.h> > #include<string.h> > #include<memory.h> > const int maxn=54117; > const int maxs=20010; > > int a[maxs],hash[maxn],b[maxs]; > int n,m; > int ELFhash(char *key) > { > unsigned long h=0; > while(*key) > { > h=(h<<4)+*key++; > unsigned long g=h&0Xf0000000L; > if(g) > h^=g>>24; > h&=~g; > } > return h%maxn; > } > > int main() > { > int i,key,cn; > char s[23]; > while(scanf("%d%d",&n,&m)!=EOF) > { > if(n==0) > break; > cn=0; > memset(hash,255,sizeof(hash)); > memset(a,0,sizeof(a)); > memset(b,0,sizeof(b)); > for(i=0;i<n;i++) > { > scanf("%s",s); > key=ELFhash(s); > if(hash[key]==-1) > { > hash[key]=cn; > a[hash[key]]++; > cn++; > } > else > a[hash[key]]++; > } > for(i=0;i<cn;i++) > b[a[i]]++; > for(i=1;i<=n;i++) > printf("%d\n",b[i]); > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator