您的位置:首页 > 其它

POJ_2001_Shortest Prefixes

2013-04-24 17:15 357 查看
题意:给定N个单词的字典,输出N个单词和这N个单词的确定字符串。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<cmath>
using namespace std;
struct Trie  //字典树结构
{
Trie *child[26];
int num;   //记录该字母的出现次数
Trie() //构造函数
{
num=0;
memset(child,0,sizeof(child));
}
};
Trie *root,*s;
void Create(char *str)  //插入单词
{
s=root;
int i=0;
while(str[i])
{
int id=str[i]-'a';
if(s->child[id]==0) //如果该字母还没有出现在字典中
{
s->child[id]=new Trie;
s=s->child[id];
}
else
{
s=s->child[id];
s->num++;
}
i++;
}
}
void Search(char *str)
{
s=root;
for(int i=0;i<strlen(str);++i)
{
int id=str[i]-'a';
s=s->child[id];
printf("%c",str[i]);
if(s->num==0) break; //如果该字母只出现了一次
}
printf("\n");
}
char a[1002][30];
int main()
{
int i=0,j;
root=new Trie;
while(~scanf("%s",a[i]))
{
Create(a[i]);
i++;
}
for(j=0;j<i;++j)
{
printf("%s ",a[j]);
Search(a[j]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: