mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Create 1247.cpp
This commit is contained in:
parent
991104cf80
commit
dcf62b6233
100
HDOJ/1247.cpp
Normal file
100
HDOJ/1247.cpp
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstring>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class node
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
node* next[26];
|
||||||
|
bool value;
|
||||||
|
node() : value(false)
|
||||||
|
{
|
||||||
|
memset(next,0,sizeof(next));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
node _headnode;
|
||||||
|
node* head=&_headnode;
|
||||||
|
|
||||||
|
void insert(const char* str)
|
||||||
|
{
|
||||||
|
int L=strlen(str);
|
||||||
|
node* p=head;
|
||||||
|
for(int i=0;i<L;i++)
|
||||||
|
{
|
||||||
|
if(p->next[str[i]-'a']==nullptr)
|
||||||
|
{
|
||||||
|
p->next[str[i]-'a']=new node;
|
||||||
|
}
|
||||||
|
p=p->next[str[i]-'a'];
|
||||||
|
}
|
||||||
|
p->value=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool search(const char* str)
|
||||||
|
{
|
||||||
|
int L=strlen(str);
|
||||||
|
node* p=head;
|
||||||
|
|
||||||
|
for(int i=0;i<L;i++)
|
||||||
|
{
|
||||||
|
if(p->next[str[i]-'a']!=nullptr)
|
||||||
|
{
|
||||||
|
p=p->next[str[i]-'a'];
|
||||||
|
if(p->value)
|
||||||
|
{
|
||||||
|
bool isFound=true;
|
||||||
|
node* q=head;
|
||||||
|
for(int j=i+1;j<L;j++)
|
||||||
|
{
|
||||||
|
if(q->next[str[j]-'a']!=nullptr)
|
||||||
|
{
|
||||||
|
q=q->next[str[j]-'a'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
isFound=false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(isFound)
|
||||||
|
{
|
||||||
|
if(q->value)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MAXN 50005
|
||||||
|
#define MAXLEN 1005
|
||||||
|
char input[MAXN][MAXLEN];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int i=0;
|
||||||
|
while(cin>>input[i])
|
||||||
|
{
|
||||||
|
insert(input[i++]);
|
||||||
|
}
|
||||||
|
for(int ci=0;ci<i;ci++)
|
||||||
|
{
|
||||||
|
if(search(input[ci]))
|
||||||
|
{
|
||||||
|
cout<<input[ci]<<endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user