hdu1671Phone List(字典树)

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
typedef struct Node
{
struct Node *next[];
int flag;
} Node,*Tree;
int flag1;
void Creat(Tree &T)
{
T=(Node *)malloc(sizeof(Node));
T->flag=;
for(int i=; i<; i++)
T->next[i]=NULL;
}
void insert(Tree &T,char *s)
{
Tree p=T;
int t;
int l=strlen(s);
for(int i=; i<l; i++)
{
t=s[i]-'';
if(p->next[t]==NULL)
Creat(p->next[t]);
p=p->next[t];
if(p->flag>) flag1=;
}
p->flag++;
}
void D(Tree p)
{
for(int i=; i<; i++)
{
if(p->next[i]!=NULL)
D(p->next[i]);
}
free(p);
}
int cmp(const void *a,const void *b)
{
return strcmp((char *)a,(char *)b);
}
char a[][];
int main()
{ Tree T;
int tt,m;
scanf("%d",&tt);
while(tt--)
{
Creat(T);
flag1=;
scanf("%d",&m);
for(int i=; i<m; i++)
{
scanf("%s",a[i]); }
qsort(a,m,sizeof(a[]),cmp);
for(int i=; i<m; i++)
{ insert(T,a[i]);
}
if(flag1)
printf("YES\n");
else printf("NO\n");
D(T); }
return ;
}
上一篇:JS判断终端


下一篇:JAVA 编程规范(上)