HihoCoder 1014 Trie树模板

来源:互联网 发布:公司网络屏蔽qq 编辑:程序博客网 时间:2024/06/05 18:55

传送门:HihoCoder 1014

题解

熟练白书的数组模拟Trie树模板


AC code:

#include<iostream>#include<cstring>using namespace std;const int maxn(1e6 + 5);int cnt[maxn], ch[maxn][26];int idx(char p){return p - 'a';}struct Trie{    int sz;    Trie(){        sz = 1;        memset(cnt, 0, sizeof(cnt));        memset(ch, 0, sizeof(ch));    }    void insert_node(char *s){        int u = 0, len = strlen(s);        for(int i = 0; i < len; ++i){            int v = idx(s[i]);            if(!ch[u][v]){                ch[u][v] = sz++;            }            u = ch[u][v];            ++cnt[u];        }    }    int query(char *s){        int u = 0, len = strlen(s);        for(int i = 0; i < len; ++i){            int v = idx(s[i]);            if(!ch[u][v]) return 0;            u = ch[u][v];        }        return cnt[u];    }};int main(){    int n, m;    char s[15];    while(cin >> n){        Trie root;        for(int i = 0; i < n; ++i) {            cin >> s;            root.insert_node(s);        }        cin >> m;        while(m--){            cin >> s;            cout << root.query(s) << endl;        }    }    return 0;}
0 0
原创粉丝点击