HDU 1251统计难题 字典树
字典树的应用。
数据结构第一次课的作业竟然就需要用到树了!!!这不科学啊。赶紧来熟悉一下字典树。
空间开销太大T T
#include<cstdio> #include<cstring> const int MAXN=26; struct Trie { Trie *next[MAXN]; int v; }; Trie *root=new Trie(); void creatTrie(char *s) { int len=strlen(s); Trie *p=root,*q; for(int i=0;i<len;i++) { int index=s[i]-'a'; if(p->next[index]==NULL) { q=new Trie(); q->v=1; p->next[index]=q; p=q; } else { p->next[index]->v++; p=p->next[index]; } } } int findTrie(char *s) { int len=strlen(s); Trie *p=root; for(int i=0;i<len;i++) { int index=s[i]-'a'; p=p->next[index]; if(p==NULL) return 0; } return p->v; } int main() { char temp[12]; while(gets(temp)&&temp[0]!='\0') { creatTrie(temp); } while(scanf("%s",temp)!=EOF) { printf("%d\n",findTrie(temp)); } }
新 blog : www.hrwhisper.me