静态字典树(模拟动态的)

来源:互联网 发布:查询芝麻分数据接口 编辑:程序博客网 时间:2024/06/06 00:19
<pre name="code" class="cpp">静态字典树,其实质是模拟实现动态字典树的#include<cstdio>#include<cstring>#include<cstdlib>const int Max=10;using namespace std;struct trie{    int next[Max];    int flag;}node[100000];int num;bool insert(char * str){    int i,len,tem,p;    p=0;    len=strlen(str);    for(i=0;i<len;i++)   {        tem=str[i]-'0';        if(node[p].next[tem]!=-1){            p=node[p].next[tem];            if(i==len-1)                return 1;            if(node[p].flag==1)                return 1;        }// 已插入过字符的处理,更具实际的情况写返回条件        else        {// 这是真正的插入字符            node[p].next[tem]=++num;            p=num;        }        if(i==len-1)            node[p].flag=1;// 记录单词的最后一个字符    }    return 0;}int main(){    int T,n,i;    char s[15];    bool yes;    scanf("%d",&T);    while(T --)    {        scanf("%d",&n);        memset(node,-1,sizeof(node));     ///初始化莫忘        yes=0;        num=0;        for(i=0;i<n;i++)        {            scanf("%s",s);            if(yes==0)                if(insert(s))                    yes=1;        }        if(yes==0)            printf("YES\n");        else            printf("NO\n");    }}// 注意写静态内存方式的trie树时不要乱写指针,我就悲剧的调试好久没有结果


                                             
0 0