#include<iostream>
#include<cmath>
#include<cstdio>
#include<vector>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{
char s[20];
int len;
}dics[10000+5];
bool match(char a[],char b[]) //a<b
{
int k,i;
for(i=0;a[i];i++)
if(a[i]!=b[i])
{
k=i;
break;
}
if(i==strlen(a))
return 1;
for(i=k;a[i];i++)
if(a[i]!=b[i+1])
return 0;
return 1;
}
bool fun(char a[],char b[])
{
int k;
for(int i=0;a[i];i++)
if(a[i]!=b[i])
{
k=i;
break;
}
for(int i=k+1;a[i];i++)
if(a[i]!=b[i])
return 0;
return 1;
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);
char s[20];
int i=0;
while(scanf("%s",s)&&strcmp(s,"#"))
{
dics[i].len=strlen(s);
strcpy(dics[i].s,s);
i++;
}
while(~scanf("%s",s)&&strcmp(s,"#"))
{
int len=strlen(s);
int flag=0;
for(int j=0;j<i;j++)
{
if(dics[j].len==len)
{
if(strcmp(s,dics[j].s)==0)
{
flag=1;
printf("%s is correct\n",s);
break;
}
}
}
if(flag)
continue;
printf("%s:",s);
for(int j=0;j<i;j++)
{
if(dics[j].len==len-1)
if(match(dics[j].s,s))
printf(" %s",dics[j].s);
if(dics[j].len==len)
if(fun(s,dics[j].s))
printf(" %s",dics[j].s);
if(dics[j].len==len+1)
if(match(s,dics[j].s))
printf(" %s",dics[j].s);
}
printf("\n");
}
return 0;
}
/*
i
is
has
have
be
my
more
contest
me
too
if
award
#
me
aware
m
contest
hav
oo
or
i
fi
mre
#
*/
POJ 1035 字典
最新推荐文章于 2019-01-08 03:13:45 发布