HDU_2027
直接应用字符串的哈希即可,每成功插入一个单词,计数增加1。
#include#include #include int head[1000003],next[1000]; char b[1000],st[1000][100]; int hash(char *str) { int seed=31,v=0; while(*str) v=v*seed+*(str++); return (v&0x7FFFFFFF)%1000003; } int insert(int s) { int i,h; h=hash(st[s]); for(i=head[h];i!=-1;i=next[i]) if(strcmp(st[s],st[i])==0) break; if(i==-1) { next[s]=head[h]; head[h]=s; return 1; } return 0; } int main() { int i,j,k,n; while(1) { gets(b); if(b[0]=='#') break; k=strlen(b); n=0; memset(head,-1,sizeof(head)); for(i=0;i