#include<stdio.h>
#include<string.h>
char word[1001][21];
struct tree
{
tree *next[30];
int time;
int fin;
tree()
{
for(int i=0;i<30;i++)
{
next[i]=NULL;
}
time=0;
fin=0;
}
}*root;
void set(char *s)
{
tree *item=root;
for(int i=0;s[i];i++)
{
int j=s[i]-'a';
if(item->next[j]==NULL)
{
item->next[j]=new tree;
item->next[j]->time=1;
}
else
{
item->next[j]->time++;
}
item=item->next[j];
}
item->fin=1;
}
void search(char *s)
{
tree *item=root;
for(int i=0;s[i]&&item;i++)
{
int j=s[i]-'a';
if(item->next[j]->time==1)
{
printf("%c",s[i]);
return ;
}
else
{
printf("%c",s[i]);
}
item=item->next[j];
}
}
int main()
{
root=new tree;
int i=0;
while(gets(word[i]))
{
set(word[i]);
i++;
}
int j=0;
while(j<i)
{
printf("%s ",word[j]);
search(word[j]);
puts("");
j++;
}
}
POJ2001 - Shortest Prefixes - 字典树
最新推荐文章于 2019-10-11 14:21:15 发布