hdu 1251
c++
#include<bits/stdc++.h> using namespace std; struct node // make tree; { node *next[26]; int cnt; node() { cnt=0; memset(next,0,sizeof(next)); } }; node root;// 000 void buildtrie(char *s) { node *p=&root; int l=strlen(s); for(int i=0;i<l;i++) { if(p->next[s[i]-'a']==NULL) { p->next[s[i]-'a']=new node; } p=p->next[s[i]-'a']; p->cnt++; } } int findtrie(char *s) { node *p=&root; int l=strlen(s); for(int i=0;i<l;i++) { if(p->next[s[i]-'a']==NULL) return 0; p=p->next[s[i]-'a']; } return p->cnt; } int main() { char word[11]; while(cin.getline(word,12)) { if(strlen(word)==0||word[0]==' ') break; buildtrie(word); } while(scanf("%s",word)!=EOF) { printf("%d\n",findtrie(word)); } }
#include<iostream>#include<string.h>
using namespace std;struct node{ node *next[26]; int cnt; node() { cnt=0; memset(next,0,sizeof(next)); }};node root;void buildtrie(char *s){ node *p=&root; int l=strlen(s); for(int i=0;i<l;i++) { if(p->next[s[i]-'a']==NULL) { p->next[s[i]-'a']=new node; } p=p->next[s[i]-'a']; p->cnt++; }}int findtrie(char *s){ node *p=&root; int l=strlen(s); for(int i=0;i<l;i++) { if(p->next[s[i]-'a']==NULL) return 0; p=p->next[s[i]-'a']; } return p->cnt;
}int main(){ char s[12]; while(cin.getline(s,12)) { if(strlen(s)==0||s[0]==' ') break; buildtrie(s); } //cout<<"-----"<<endl; while(scanf("%s",s)!=EOF) { printf("%d\n",findtrie(s)); }}