hihocoder1014 Trie树

Trie树

题目传送门

模板题,思路直接按题目上的即可

贴一贴模板:

#include
#include
#include
using namespace std;
int a[1000005][26],sum[1000005];
char s[15];
int n,m,k;
int calc(char c){
    return (c-'a');
}
void nsrt(char s[]){
    int now=0,len=strlen(s);
    for (int i=0;s[i];i++){
        if (!a[now][calc(s[i])])
            a[now][calc(s[i])]=++k;
        now=a[now][calc(s[i])];
        sum[now]++;
    }
}
int srch(char s[]){
    int now=0;
    for (int i=0;s[i];i++)
        if (!a[now][calc(s[i])])
            return 0;
        else 
            now=a[now][calc(s[i])];
    return sum[now];
}
int main(){
    scanf("%d",&n);
    for (int i=1;i<=n;i++){
        scanf("%s",s);
        nsrt(s);        
    }
    scanf("%d",&m);
    for (int i=1;i<=m;i++){
        scanf("%s",s);
        printf("%d\n",srch(s));
    }
    return 0;
}

你可能感兴趣的:(hihocoder,字符串---Trie树,蒟蒻zxl的Blog专栏)