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