#include<iostream>
#include<cstdio>
#include<cstring>
#define N 100005
using namespace std;
int Trie[N][];
int nodeN;
int main()
{
int t, n, i, j, isPrefix, flag;
char ph[];
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
isPrefix=;
nodeN=;
memset(Trie[], , sizeof(int)*);
for(i=; i<n; ++i)
{
scanf("%s", ph);
flag=;
int cur=;
if(!isPrefix)
for(j=; ph[j]; ++j)
{
int k=ph[j]-'';
if(!Trie[cur][k])
{
if(i!= && !flag)//利用第一个字符串建立一个初始的trie树
{
flag=;//建立了新节点(如果当前 cur 节点还有孩子说明没有公共前缀, 否则说明当前路已经走到了尽头,产生了公共前缀)
int c;
 for(c=; c<; ++c)//检查时候当前节点cur是否有孩子节点
      if(Trie[cur][c])
         break;
      if(c>=)
38       {
       isPrefix=; //没有孩子节点,则说明产生了公共前缀
        break;
     }
    }
Trie[cur][k]=++nodeN;
memset(Trie[nodeN], , sizeof(int)*);
}
cur=Trie[cur][k];
}
if(flag== && i!=)//如果不是第一个字符串,而且在遍历整个树的时候没有发现建立新的节点,则说明当前字符串必然是之前某个字符串的公共前缀
isPrefix=;
}
if(isPrefix)
printf("NO\n");
else printf("YES\n");
}
return ;
}
 /*
好不容易想用一下链表来写一下,还超时啊。。。。
*/
1 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
class Trie
{
public:
Trie *ch[];
Trie()
{
memset(ch, , sizeof(ch));
}
}; int main()
{
int t, n, i, j, isPrefix, flag;
char ph[];
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
Trie *root=new Trie();
isPrefix=;
for(i=; i<n; ++i)
{
scanf("%s", ph);
flag=;
Trie * cur=root;
if(!isPrefix)
for(j=; ph[j]; ++j)
{
int k=ph[j]-'';
if(!cur->ch[k])
{
if(i!= && !flag)
{
flag=;
int c;
for(c=; c<; ++c)
if(cur->ch[c])
break;
if(c>=)
{
isPrefix=;
break;
}
}
cur->ch[k]=new Trie();
}
cur=cur->ch[k];
}
if(flag== && i!=)
isPrefix=;
}
if(isPrefix)
printf("NO\n");
else printf("YES\n");
}
return ;
}

最新文章

  1. 初识Message Queue之--基础篇
  2. 怎么样在Myeclipse中配置JDK?
  3. SharePoint 2013 工作流设计之Designer 使用“可视化视图”
  4. MVC学习笔记---ModelBinder
  5. github 有名的问题【ERROR: Permission to .git denied to user】
  6. css hack 大全 各个浏览器的css
  7. 多站点FTP同步
  8. Effective C++ 10
  9. LR11 scan correlation 卡死解决方案
  10. 体验CSDN-Markdown
  11. Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(下篇——多页面VueSSR+热更新Server)
  12. Hadoop2动态调整Log级别-以datanode的heartbeat log为例
  13. SQL根据细粒度为天的查询
  14. Supervisor配置
  15. iOS动画1 — UIView动画
  16. 委托、Lambda表达式、事件系列05,Action委托与闭包
  17. codeforces 536a//Tavas and Karafs// Codeforces Round #299(Div. 1)
  18. 火狐插件安装-基于web自动化测试
  19. java高级----&gt;Thread之CompletionService的使用
  20. RabbitMQ 概念与Java例子

热门文章

  1. Nonblocking I/O and select()
  2. .net core Jwt 添加
  3. jQuery 获取屏幕高度、宽度
  4. java分享第十七天-02(封装操作excel类)
  5. Spark优化之二:集群上运行jar程序,状态一直Accepted且不停止不报错
  6. Python 比较两个字符串大小
  7. C# 定时器 Timers.Timer Forms.Timer
  8. ql 判断 函数 存储过程是否存在的方法
  9. bgp多线
  10. 安卓刷机--fastboot线刷