您的位置:首页 > 其它

POJ2001 - Shortest Prefixes - 字典树

2014-08-06 19:41 399 查看
#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++;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: