统计难题 【 HDU - 1251 】【 字典树 】

2023-03-09 19:13:26 浏览数 (1)

 统计难题

HDU - 1251 

简单字典树。

代码语言:javascript复制
#include <iostream>
#include <string.h>

using namespace std;

struct node {
    int num;
    struct node *next[26];
    node(){
        for(int i = 0; i < 26; i   ) {
            next[i] = NULL;
        }
        num = 0;
    }
};
void Insert(char word[], struct node *root)
{
    struct node *p = root;
    for(int i = 0; word[i] ; i   )
    {
        if(p -> next[word[i] - 'a'] == NULL)
            p -> next[word[i] - 'a'] = new node;
        p = p -> next[word[i] - 'a'];
        p -> num   ;
    }
}
int fin(char word[], struct node *root)
{
    struct node *p = root;
    for(int i = 0; word[i] ; i   )
    {
        if(p -> next[word[i] - 'a'] == NULL) return 0;
        p = p -> next[word[i] - 'a'];
    }
    return p -> num;
}
int main()
{
    char word[15];
    struct node *root;
    root = new node;
    while(cin.getline(word,12)){
        if(strlen(word)==0 || word[0]==' ')
            break;
        Insert(word,root);
    }
     while(scanf("%s",word)!=EOF){
        printf("%dn",fin(word, root));
    }
    return 0;
}

0 人点赞