hdu1251 统计难题 字典树
hdu 1251 统计难题
字典树的解释及模板
背下来..
#include<iostream>using namespace std;struct trie{int num;bool isword;trie *child[26];trie(){for(int i=0;i<26;i++)child[i]=0;num=0;isword=0;}} root;void insert(char *x){int k=0;trie *p=&root;while(x[k]!='\0'){if(p->child[x[k]-'a']==0)p->child[x[k]-'a']=new trie;p=p->child[x[k]-'a'];p->num++;k++;}p->isword=1;}int find(char *x){int k=0;trie *p=&root;while(x[k]!='\0'&&p->child[x[k]-'a'])p=p->child[x[k++]-'a'];//printf("!");return x[k]=='\0'? p->num:0;}int main(){char x[20];while(gets(x)&&x[0]!='\0') insert(x);while(scanf("%s",x)!=EOF)printf("%d\n",find(x));return 0;}
题目:
HDU: 1004,1251,1075,1800,2072