hdu 1521

字典树模板题,没有用链式存储,用的数组(提交一直re,都没发现是数组类型写错了,不如自己写一遍)

#include <bits/stdc++.h>
using namespace std;

int trie[1000010][26];
int num[1000010]={0};
int pos = 1;

void Insert(char a[])
{
    int c=0;
    for(int i=0;a[i];i++){
        int n=a[i]-'a';
        if(trie[c][n]==0){
            trie[c][n]=pos++;
        }
        c=trie[c][n];
        num[c]++;
    }
    return ;
}
int Find(char a[])
{
    int c=0;
    for(int i=0;a[i];i++){
        int n=a[i]-'a';
        if(trie[c][n]==0){
            return 0;
        }
        c=trie[c][n];
    }
    return num[c];
}

int main()
{
    char a[11];
    while(gets(a)){
        if(a[0]==NULL) break;
        Insert(a);
    }
    while(gets(a)){
        printf("%d
",Find(a));
    }
    return 0;
}
/*
banana
band
bee
absolute
acm

ba
b
band
abc
*/
原文地址:https://www.cnblogs.com/lalalatianlalu/p/8125241.html