一改时间以后WA了,我就知道这题是考字典树,可惜代码怎么也不会敲了,郁闷。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Node
{
int flag;
struct Node *next[26];
}Node,*Tree;
char a[200010][6];
int n,m;
int sum=0;
void Creat(Tree &T)
{
int i;
T=(Tree)malloc(sizeof(Node));
T->flag=0;
for(i=0;i<26;i++)
T->next[i]=NULL;
}
void insert(Tree &T,char *s)
{
int l,i,t;
Tree p=T;
l=strlen(s);
for(i=0;i<l;i++)
{
t=s[i]-'a';
if(p->next[t]==NULL)
Creat(p->next[t]);
p=p->next[t];
}
p->flag++;
if(sum<p->flag)
sum=p->flag;
}
void Delete(Node *p)
{
int i;
for(i=0; i<26; i++)
{
if(p->next[i]!=NULL)
Delete(p->next[i]);
}
free(p);
}
int main()
{
int i;
Tree T;
while(scanf("%d",&n)!=EOF)
{
Creat(T);
sum=0;
for(i=0;i<n;i++)
{
scanf("%s",a[i]);
insert(T,a[i]);
}
printf("%d\n",sum);
Delete(T);
}
return 0;
}