记录编号 |
422324 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[Youdao2010] 有道搜索框 |
最终得分 |
100 |
用户昵称 |
Hzoi_Mafia |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.024 s |
提交时间 |
2017-07-09 16:15:32 |
内存使用 |
1.15 MiB |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
struct trie{
int dfn;
trie *ch[26];
trie():dfn(0){
memset(ch,0,sizeof(ch));
}
};
trie *root(new trie());
int n,q;
int cnt;
char key[10001][25],article[25];
inline void insert(char *s,int x){
int len(strlen(s));
trie *now(root);
for(int i=0;i<len;i++){
int k(s[i]-'a');
if(now->ch[k]==NULL)
now->ch[k]=new trie();
now=now->ch[k];
}
now->dfn=x;
}
inline void print_fail(char *s){
printf("%s\n",s);
}
int ans[10];
inline void dfs(trie *x){
if(cnt>=8)
return;
if(x->dfn)
ans[++cnt]=x->dfn;
for(int i=0;i<26;i++)
if(x->ch[i]!=NULL)
dfs(x->ch[i]);
}
inline void print_success(){
for(int i=1;i<cnt;i++)
printf("%s ",key[ans[i]]);
printf("%s\n",key[ans[cnt]]);
}
inline void find(char *s){
int len(strlen(s));
trie *now(root);
for(int i=0;i<len;i++){
int k(s[i]-'a');
if(now->ch[k]==NULL){
print_fail(s);
return;
}
now=now->ch[k];
}
dfs(now);
print_success();
}
inline int gg(){
freopen("youdao.in","r",stdin);
freopen("youdao.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s",key[i]);
insert(key[i],i);
}
scanf("%d",&q);
while(q--){
scanf("%s",article);
cnt=0;
find(article);
}
}
int k(gg());
int main(){;}