hdu 1251 字典树
来源:互联网 发布:js 数字转换为汉字 编辑:程序博客网 时间:2024/05/16 07:19
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=27;const int maxm=27;char s[maxm],str[maxn];struct node{ int n; node *next[maxn]; node() { memset(next,0,sizeof(next)); n=1; }};void Insert(node *rt,char *str){ int i=0; node *p=rt; while(str[i]) { int k=str[i++]-'a'; if(p->next[k]==NULL) p->next[k]=new node(); else p->next[k]->n++; p=p->next[k]; }}int find(node *rt,char *s){ int i=0,j=0; node *p=rt; while(s[i]) { int k=s[i++]-'a'; if(p->next[k]==NULL) return 0; p=p->next[k]; } return p->n;}int main(){ //freopen("//media/学习/ACM/input.txt","r",stdin); node *rt=new node(); rt->n=0; while(gets(s)&&strcmp(s,"")!=0) { Insert(rt,s); } while(scanf("%s",str)!=EOF) { int ans=find(rt,str); cout<<ans<<endl; } return 0;}