hdu 1251 Trie 坑的丫匹

就是一道Trie树,但是一晚上没过,最后发现原因是初始化的问题
#include <iostream>
#include<cstring>
#include<string>
#include<cstdlib>

using namespace std;

struct Node
{
    int num;
    Node* next['z'-'a'+1];
    Node():num(0){
        for(int i=0; i < sizeof(next)/sizeof(*next); i++){
            next[i]=NULL;
        }/*这里的初始化为NULL很重要啊,一直a不了就是因为这*/
    }
}node;

void insert(string s)
{
    int slen = s.length();
    Node* t = &node;
    for(int i = 0; i<slen;i++)
    {
        int id = s[i] -'a';
        if(t->next[id] == NULL) t->next[id] = new Node;
        t = t->next[id];
        t->num++;
    }
}

int find(string s)
{
    int slen = s.length();
    Node* t = &node;
    for(int i = 0; i<slen;i++)
    {
        int id = s[i] -'a';
        t = t->next[id];
        if(t == NULL)return 0;
    }
    return t->num;
}
int main()
{
    string s;
    while(getline(cin,s))
    {
        if(s.length() == 0) break;
        insert(s);
    }
    while(getline(cin,s))
    {
        if(s.length() == 0) break;
        cout<<find(s)<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/amous_x/article/details/80073786
今日推荐