记录编号 |
283541 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[Youdao2010] 有道搜索框 |
最终得分 |
100 |
用户昵称 |
安呐一条小咸鱼。 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.087 s |
提交时间 |
2016-07-14 21:04:18 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
struct Trie
{
bool judge;
Trie* next[55];
Trie()
{
judge=false;
for(int i=0;i<26;i++)
{
next[i]=NULL;
}
}
};
int ans=0,n,help,cnt;
char head[100];
void dfs(Trie *p,int pos)
{
if(cnt==8)return;
if(p->judge)head[pos]='\0',printf("%s ",head+help),help=0,cnt++;
for(int i=0; i<26; ++i)
if(p->next[i]!=NULL)head[pos]=i+'a',dfs(p->next[i], pos+1);
}
void insert(Trie *p)
{
int k;
for(int i=0;head[i];i++)
{
k=head[i]-'a';
if(p->next[k]==NULL)p->next[k]=new Trie();
p=p->next[k];
}
p->judge=true;
}
void query(Trie *p)
{
int k;
for(int i=0;head[i];i++)
{
k=head[i]-'a';
if(p->next[k]==NULL)return;
p=p->next[k];
}
help=strlen(head);
cnt=0;
dfs(p,strlen(head));
}
Trie *root=new Trie();
int main()
{
freopen("youdao.in","r",stdin);
freopen("youdao.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%s",head);
insert(root);
}
int m;
cin>>m;
for(int i=1;i<=m;i++)
{
scanf("%s",head);printf("%s",head);
query(root);puts("");
}
return 0;
}