题意很简单 就是给一个最多有100000对单词的英语和外语的字典 然后给你一个词 要求翻译
我开始受刚作的一个题的影响 建了一个树 然后查找 不过超时了 应该是建树的开销比较大吧
后来用的是排序然后二分查找 200+ms就过了 还是比较快的
cmp函数参考了http://185229677.itpub.net/
在此表示感谢
代码贴出来
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct dict
{
char english[11];
char foreign[11];
}a[100001];
int mycmp(const void * aa,const void *b)
{
return strcmp(((dict*)aa)->foreign,((dict*)b)->foreign);
}
int cmp(const void* aa,const void* b)
{
return strcmp((char*)aa,((dict*)b)->foreign);
}
int main()
{
char line[30],query[11];
int i=0,j,k;
while(gets(line))
{
if(!strcmp(line,"")) break;
k=strlen(line);
for(j=0;j<k;j++)
{
if(line[j]==' ')
{
line[j]='\0';
break;
}
}
strcpy(a[++i].english,line);
strcpy(a[i].foreign,line+j+1);
}
qsort(a+1,i,sizeof(dict),mycmp);
while(gets(query))
{
dict* f=(dict *)bsearch(query,a+1,i,sizeof(dict),cmp);
if(f) printf("%s\n",f->english);
else puts("eh");
}
}