标签:des style blog http color io os java ar
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2538 Accepted Submission(s): 990
1 //#define LOCAL 2 #include<cstdio> 3 #include<cstring> 4 typedef struct node 5 { 6 struct node *child[26]; 7 int cnt; //作为统计 8 int id; 9 }Trie; 10 11 void Insert(char *s,Trie *root,int id) 12 { 13 int pos,i; 14 Trie *cur=root,*curnew; 15 for(;*s!=‘\0‘;s++) 16 { 17 pos=*s-‘a‘; 18 if(cur->child[pos]==NULL) 19 { 20 curnew = new Trie; 21 for( i=0; i<26;i++) 22 curnew->child[i]=NULL; 23 curnew->cnt=0; 24 curnew->id=0; 25 cur->child[pos]=curnew; 26 } 27 cur=cur->child[pos]; 28 if(cur->id!=id) //避免同一个单词重复计算子串 29 { 30 cur->cnt++; 31 cur->id=id; 32 } 33 } 34 } 35 36 int query(char *s, Trie *root) 37 { 38 int pos; 39 Trie *cur=root; 40 while(*s!=‘\0‘) 41 { 42 pos=*s-‘a‘; 43 if(cur->child[pos]==NULL) 44 return 0; 45 cur=cur->child[pos]; 46 s++; 47 } 48 return cur->cnt; 49 } 50 void del(Trie *root) 51 { 52 Trie *cur=root; 53 for(int i=0;i<26;i++) 54 { 55 if(cur->child[i]!=NULL) 56 del(cur->child[i]); 57 } 58 delete cur; 59 return ; 60 } 61 char str[22]; 62 int main() 63 { 64 #ifdef LOCAL 65 freopen("test.in","r",stdin); 66 #endif 67 int n,m,i; 68 scanf("%d",&n); 69 Trie *root=new Trie; 70 for( i=0;i<26;i++) 71 root->child[i]=NULL; 72 root->cnt=0; 73 while(n--) 74 { 75 scanf("%s",str); 76 for(i=0 ; str[i]!=‘\0‘ ;i++) 77 Insert(str+i,root,n+1); 78 } 79 scanf("%d",&m); 80 while(m--) 81 { 82 scanf("%s",str); 83 printf("%d\n",query(str,root)); 84 } 85 del(root); 86 return 0; 87 }
hdu----(2848)Repository(trie树变形)
标签:des style blog http color io os java ar
原文地址:http://www.cnblogs.com/gongxijun/p/3978467.html