Trie树
#include<iostream> #include<algorithm> #include<cstdio> #include<cstdlib> #include<queue> #include<vector> #include<cstring> #include<cmath> using namespace std; typedef long long ll; #define N 1000000000 #define Max 11111 struct tire{ int ff; tire *netx[26]; }; tire root; char str[11]; void init(tire *p) { p->ff=0; for(int i=0;i<26; i++)p->netx[i]=NULL; } void TianJia() { int len=strlen(str); tire *p=&root,*q; for(int i=0; i<len; i++){ int x=str[i]-'a'; if(p->netx[x]==NULL){ q=(tire *)malloc(sizeof(tire)); init(q); p->netx[x]=q; p=p->netx[x]; p->ff++; } else{ p=p->netx[x]; p->ff++; } } } int ChaXun() { int len=strlen(str); tire *p=&root; for(int i=0; i<len; i++){ int x=str[i]-'a'; if(p->netx[x]==NULL)return 0; else p=p->netx[x]; } return p->ff; } int main() { int n,m; scanf("%d",&n); while(n--){ scanf("%s",&str); TianJia(); }
return 0;
}