记录编号 422324 评测结果 AAAAAAAAAA
题目名称 [Youdao2010] 有道搜索框 最终得分 100
用户昵称 GravatarHzoi_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(){;}