标签: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-6 using 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); } }
标签:trie树
原文地址:http://blog.csdn.net/dongshimou/article/details/37511971