码迷,mamicode.com
首页 > 其他好文 > 详细

HDU1671 水题字典树

时间:2017-10-18 10:09:56      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:lib   ace   i++   eof   单词   scanf   style   ++   printf   

#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 水题字典树

标签:lib   ace   i++   eof   单词   scanf   style   ++   printf   

原文地址:http://www.cnblogs.com/hua-dong/p/7684896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!