码迷,mamicode.com
首页 > 其他好文 > 详细

hihocoder 1014 Trie树

时间:2015-04-30 00:52:19      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

  题目链接:http://hihocoder.com/problemset/problem/1014 ,刚学的字典树,就当模板了。

  最近都没有好好刷题,罪过罪过。

 

#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <string>
#include <string.h>
#include <algorithm>
using namespace std;
#define LL long long
const int maxn = 1000000;
struct Trie {
    int ch[maxn][26];
    int cnt[maxn];
    int size;
    Trie() {    
        size = 1; 
        memset(ch[0] , 0 , sizeof(ch[0]));
        memset(cnt , 0 , sizeof(cnt));
    }
    int index(char c) {    return c - a;    }
    void insert(char *s , int v) {
        int i , u;
        for(i = u = 0 ; s[i] != \0 ; i++) {
            int c = index(s[i]);
            if(!ch[u][c]) { 
                memset(ch[size] , 0 , sizeof(ch[size]));
                ch[u][c] = size++;
            }
            u = ch[u][c];
            cnt[u]++;        //必须在这里
        }
    }
    int query(char *s) {
        int i , u;
        for(i = u = 0 ; s[i] != \0 ; i++) {
            int c = index(s[i]);
            if(!ch[u][c])        return 0;
            u = ch[u][c];
        }
        return cnt[u];
    }
} trie;

int main() 
{
    int n , m;
    char s[20];
    scanf("%d" , &n);
    while(n--) {
        scanf("%s" , s);
        trie.insert(s , 1);
    }
    scanf("%d" , &m);
    while(m--) {
        scanf("%s" , s);
        printf("%d\n" , trie.query(s));
    }
}

 

hihocoder 1014 Trie树

标签:

原文地址:http://www.cnblogs.com/H-Vking/p/4467754.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!