#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int ch[300001][26];
int id,p[30001];
char s[10001][25];
void insert(char *s)
{
int cur=1,i;
for(i=0;s[i];i++)
{
if(!ch[cur][s[i]-'a'])
ch[cur][s[i]-'a']=++id;
cur=ch[cur][s[i]-'a'];
p[cur]++;
}
}
void query(char *s)
{
int cur=1,i;
for(i=0;s[i];i++)
{
cur=ch[cur][s[i]-'a'];
if(p[cur]==1)
{
i++;
break;
}
}
s[i]='\0';
puts(s);
}
int main()
{
//memset(p,0,sizeof(p));当时一不小心就加了个memset,结果一直ML,后来百度了一下才知道,全局变量如果没有初始化时没有分配空间的。
//memset(ch,0,sizeof(ch));
id=1;
int i=0,j;
while(gets(s[++i])) insert(s[i]);
for(j=1;j<=i;j++)
{
printf("%s ",s[j]);
query(s[j]);
}
return 0;
}POJ 2001(傻逼版)
最新推荐文章于 2018-11-14 11:04:31 发布
本文详细介绍了使用C++进行字符串插入和查询的操作,同时结合数据结构优化实现高效处理。通过实例演示了字符串匹配算法的应用,展示了C++在实际编程中的强大能力。
814

被折叠的 条评论
为什么被折叠?



