设为首页 加入收藏

TOP

poj2001 Shortest Prefixes
2015-11-21 01:01:53 来源: 作者: 【 】 浏览:1
Tags:poj2001 Shortest Prefixes

题意:给你一些字符串 对于每个字符串 求出它们特有的最小前缀 输出格式 字符串 + 最小前缀

思路:字典树;

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 1000000000000
#define N 1010
#define LL long long
#define eps 10E-9
#define mem(a) memset(a,0,sizeof(a))
#define w(a) while(a)
#define s(a) scanf("%d",&a)
#define ss(a,b) scanf("%d%d",&a,&b)
#define sss(a,b,c) scanf("%d%d%d",&a,&b,&c)
using namespace std;
char str[N][25];
struct node
{
int sum;
struct node *next[26];
node ()//构造函数 初始化用
{
sum=0;
mem(next);
}
} ;
node *root=NULL;
void maketree(char *s)
{
node *p=root;
node *tmp=NULL;
for(int i=0; i {
if(p->next[s[i]-'a']==NULL)
{
tmp=new node ;
p->next[s[i]-'a']=tmp;
}
p=p->next[s[i]-'a'];
p->sum++;
}
}
void searchtree(char *s)
{
node *p=root;
for(int i=0; i {
p=p->next[s[i]-'a'];
printf("%c",s[i]);
//cout< if(p->sum==1)
break;
}
}
int main()
{
int j,i;
int num=0;
root =new node;
while(cin>>str[num])
{
maketree(str[num]);
num++;
}
for(int i=0; i {
printf("%s ",str[i]);
searchtree(str[i]);
cout< }
return 0;
}


?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uva 10313 Pay the Price (DP) 下一篇LightOJ1287---Where to Run (概..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: