[Trie]hihoCoder 1014 Trie树

 

#include <iostream>

#include <cstring>

#include <cstdio>

#include <string>

  

using namespace std;

  

int t,n;

bool ok;

string str;

  

struct Trie 

{ 

    Trie *next[26]; 

    int num;

}; 

  

void insert(Trie * root ,string str){

    int len=str.length();

    Trie * p= root;

    for(int i=0;i<len;++i){

        if(p->next[ str[i]-'a' ] ==NULL){

            Trie * temp=new Trie;

            temp->num=0;

            for(int j=0;j<26;++j){

                temp->next[j]=NULL;

            }

            p->next[ str[i]-'a' ]=temp;

        }

        p=p->next[ str[i]-'a' ];

        p->num++;

    }

    

}

void del(Trie * root){

    Trie*temp=root;

    for(int i=0;i<26;++i){

        if(temp->next[i]!=NULL){

            del(temp->next[i]);

        }

    }

    delete(root);

}

int cal(Trie* root,string str){

	int len=str.length();

	Trie* p = root;

	for(int i=0;i<len;++i){

		p=p->next[str[i]-'a'];

		if(p==NULL)return 0;

	}

	return p->num;

}

int main()

{



        Trie *root=new Trie;

        root->num=0;

        for(int i=0;i<26;++i){

            root->next[i]=NULL;

        }

        

        cin>>n;

        while(n--){

            cin>>str;

            insert(root,str);

        }

        cin>>n;

        while(n--){

            cin>>str;

            cout<<cal(root,str)<<endl;

        }

    return 0;

}          

  

你可能感兴趣的:(code)