您的位置:首页 > 其它

成长轨迹46 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2804:词典】

2012-02-12 11:33 417 查看
http://poj.grids.cn/practice/2804

因为数据比较大,很容易tle
要ac起码就得将二分查找使出来
先做快排,然后进行二分查找
二分查找似乎也有stl函数:char p *= (dic *)bsearch(buf, dict, 100050 , sizeof(dict[0]), b_cmp);

【Time Limit Exceeded代码】
//因为数据比较大,很容易tle

//因为数据比较大,很容易tle
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <cmath>

char buf[100050][12];
char en[100050][12],fr[100050][12];

int main()
{
int i;
for(i=0;;i++)
{
memset(en[i],0,sizeof(en[i]));
memset(fr[i],0,sizeof(fr[i]));
en[i][0]=getchar();
if(en[i][0]=='\n')
{
break;
}
for(int j=1;;j++)
{
en[i][j]=getchar();
if(en[i][j]==' ')
break;
}
scanf("%s",fr[i]);
getchar();
}
for(int k=0;scanf("%s",buf[k])!=EOF;k++)
{
int j;
for(j=0;j<i;j++)
{
if(strcmp(buf[k],fr[j])==0)
{
printf("%s\n",en[j]);
break;
}
}
if(j==i)
printf("eh\n");
}

return 0;}


【ac代码】

//要ac起码就得将二分查找使出来
//先做快排,然后进行二分查找
//二分查找似乎也有stl函数:char p *= (dic *)bsearch(buf, dict, 100050 , sizeof(dict[0]), b_cmp);
//(变量是根据我的代码改的)
//b_cmp函数详细可以看看http://blog.csdn.net/pirage/article/details/6958752
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <cmath>
#include <stdlib.h>

char buf[12];
struct dic
{
char en[12];
char fr[12];
}dict[100050];

int cmp(const void *a,const void *b)
{
return strcmp(((struct dic *)a)->fr,((struct dic *)b)->fr);
}

void mybsearch(char *s,int n)
{
int low=0;
int hig=n-1;
while(low<=hig)
{
int mid=(low+hig+1)/2;//【注意mid不是n/2】
int t=strcmp(s,dict[mid].fr);
if(!t)
{
printf("%s\n",dict[mid].en);
return ;
}
else if(t>0)
{
low=mid+1;
}
else
{
hig=mid-1;
}
}
printf("eh\n");
}

int main()
{
int i;
for(i=0;;i++)
{
memset(dict[i].en,0,sizeof(dict[i].en));
memset(dict[i].fr,0,sizeof(dict[i].fr));
dict[i].en[0]=getchar();
if(dict[i].en[0]=='\n')
{
break;
}
for(int j=1;;j++)
{
dict[i].en[j]=getchar();
if(dict[i].en[j]==' ')
break;
}
scanf("%s",dict[i].fr);
getchar();
}
qsort(dict,i,sizeof(dic),cmp);

while(scanf("%s",buf)!=EOF)
{
mybsearch(buf,i);
}

return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐