標籤:trie樹
字典樹問題。
其實也可以用map水過去。但是想到我還要鞏固……
唉,還是老老實實用字典樹。不過 輸入中間的 空行 卡了我一下,RE……
果斷判斷*str AC了。
#include<cstdio>#include<cstring>#include<string>#include<queue>#include<algorithm>#include<queue>#include<map>#include<stack>#include<iostream>#include<list>#include<set>#include<cmath>#define INF 0x7fffffff#define eps 1e-6using namespace std;struct Trie{ int word[410000][26]; int sz; int ex[4100000]; Trie() { sz=1; memset(word,0,sizeof(word)); memset(ex,0,sizeof(ex)); } void insert(char *s) { int u=0,c,len=strlen(s); for(int i=0;i<len;i++) { c=s[i]-'a'; if(!word[u][c]) { word[u][c]=sz++; } u=word[u][c]; ex[u]++; } } int search(char *s) { int u=0,c,len=strlen(s); for(int i=0;i<len;i++) { c=s[i]-'a'; if(word[u][c]) u=word[u][c]; else return 0; } return ex[u]; }}wo;int main(){ char str[11]; while(gets(str),*str) wo.insert(str); while(scanf("%s",str)!=EOF) { int tmp=wo.search(str); printf("%d\n",tmp); }}