基礎字典樹:
#include#include char s[15]; struct node { int cnt; node *next[26]; void init() //初始化 { cnt=0; for(int i=0;i<26;i++) { next[i]=NULL; } } } ; void insert(node *root,char *s) { node *p=root; for(int i=0;s[i];i++) { int t=s[i]-'a'; if(p->next[t]==NULL) { p->next[t]=new node; p=p->next[t]; p->init() ; } else p=p->next[t]; p->cnt++; } } int find(node *root, char *s) { node *p=root; for(int i=0;s[i];i++) { int t=s[i]-'a'; p=p->next[t]; if(!p) return 0; } return p->cnt; } int main() { node *root=new node(); root->init() ; while(gets(s)&&strlen(s))//輸入控制!!! { insert(root,s); } while(gets(s)) { printf(%d ,find(root,s)); } return 0; }