題意很簡單 就是給一個最多有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");
}
}