HDU1671 水题字典树

Posted ---学习ing---

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU1671 水题字典树相关的知识,希望对你有一定的参考价值。

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int T,trie[110010][10],n,cnt;
int f[110010];
char c[12];
bool flag;
void _insert()
{
     int L=strlen(c+1),tmp=0;
     for(int i=1;i<L;i++){
            if(!trie[tmp][c[i]-0]) trie[tmp][c[i]-0]=++cnt;
            tmp=trie[tmp][c[i]-0];
            if(f[tmp]) flag=false;
     }//最后一位单独判断 
     if(trie[tmp][c[L]-0]) flag=false;
     else trie[tmp][c[L]-0]=++cnt;
     f[trie[tmp][c[L]-0]]=1;
}
int main()
{
    scanf("%d",&T);
    while(T--){
          scanf("%d",&n);
          memset(trie,0,sizeof(trie));
          memset(f,0,sizeof(f));//记录是否为单词尾字母 
          flag=true;cnt=0;
          for(int i=1;i<=n;i++){
                scanf("%s",c+1);
                if(flag) _insert();
          }
          if(flag) printf("YES\n");
          else printf("NO\n");
    }
    return 0;
}

 

以上是关于HDU1671 水题字典树的主要内容,如果未能解决你的问题,请参考以下文章

HDU1671 字典树

字典树模板+HDU 1671 ( Phone List )(字典树)

(字典树)HDU - 1671 Phone List

Phone List HDU - 1671 字典树

poj3630||hdoj1671(字典树)

hdu 1671 Phone List