字典树小试
#include<stdio.h>
#include<string.h>
char s[25],a[11],b[11];
#define maxn 200001
int ch[maxn][26];
char save[maxn][11];
int tp;
void insert(char *x,int site)
{
if(*x)
{
if(!ch[site][*x-'a'])
ch[site][*x-'a']=++tp;
insert(x+1,ch[site][*x-'a']);
}
else
{
strcpy(save[site],a);
}
}
void query(char *x,int site)
{
if(*x)
{
if(!ch[site][*x-'a'])
printf("eh\n");
else
query(x+1,ch[site][*x-'a']);
}
else
printf("%s\n",save[site]);
}
int main()
{
tp=0;
while(1)
{
gets(s);
if(s[0]=='\n'||s[0]=='\0')break;
sscanf(s,"%s%s",a,b);
insert(b,0);
}
while(~scanf("%s",a))
{
query(a,0);
}
return 0;
}