Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 36652 Accepted Submission(s):
13632
//字典树 人生指针第一份代码 #include<iostream> #include<cstdio> #include<cstring> using namespace std; struct trie { int cnt; trie *next[26]; int flag; }*root; trie *cr() { trie *pt=new trie; pt->cnt=0; memset(pt->next,0,sizeof pt->next); pt->flag=0; return pt; } void insert(char *word) { trie *p=root; char *q=word; while(*q) { int id=*q-‘a‘; if(p->next[id]==NULL) p->next[id]=cr(); p=p->next[id]; ++q; p->cnt++; } p->flag=1; } int search(char *word) { trie *p=root; char *q=word; while(*q) { int id=*q-‘a‘; p=p->next[id]; q++; if(p==NULL) return 0; } return p->cnt; } int main() { root=cr(); char s[12]; bool bz=0; while(gets(s)) { if(bz)printf("%d\n",search(s)); else { if(strlen(s)!=0) insert(s); else bz=1; } } return 0; }
原文:http://www.cnblogs.com/L-Memory/p/6290255.html