Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 22593 | Accepted: 9698 |
Description
Input
Output
Sample Input
dog ogday cat atcay pig igpay froot ootfray loops oopslay atcay ittenkay oopslay
Sample Output
cat eh loops
#include<iostream>
using namespace std;
int i,j,num;
struct set
{
char fir[15],lat[15];
};
set dictionary[100010];
void cxbin()
{
char temp[30];
while(1)
{
gets(temp);
if(temp[0]=='\n' || temp[0]=='\0')
break;
int len=strlen(temp);
for(i=0;i<len;i++)
{
if(temp[i]==' ')
{
dictionary[num].fir[i]='\0';
break;
}
dictionary[num].fir[i]=temp[i];
}
for(i++,j=0;i<len;j++,i++)
dictionary[num].lat[j]=temp[i];
dictionary[num].lat[++j]='\0';
num++;
}
}
int cmp(const void *p1,const void *p2)
{
return strcmp((*(set *)p1).lat,(*(set *)p2).lat)>0?1:-1;
}
int search(char *a)
{
int max=num,min=0,mid;
while(max>=min)
{
mid=(max+min)/2;
if(strcmp(dictionary[mid].lat,a)>0)
{
max=mid-1;
}
else if(strcmp(dictionary[mid].lat,a)<0)
{
min=mid+1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
cxbin();
qsort(dictionary,num,sizeof(dictionary[0]),cmp);
char word[12];
while(scanf("%s",word)==1)
{
int sign=search(word);
if(sign==-1)
{
printf("eh\n");
}
else
printf("%s\n",dictionary[sign].fir);
}
return 0;
}
原來查找函數還可以用bsearch來查找。。。
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
using namespace std;
int i,j,num;
struct set
{
char fir[15],lat[15];
};
set dictionary[100010];
void cxbin()
{
char temp[30];
while(1)
{
gets(temp);
if(temp[0]=='\n' || temp[0]=='\0')
break;
int len=strlen(temp);
for(i=0;i<len;i++)
{
if(temp[i]==' ')
{
dictionary[num].fir[i]='\0';
break;
}
dictionary[num].fir[i]=temp[i];
}
for(i++,j=0;i<len;j++,i++)
dictionary[num].lat[j]=temp[i];
dictionary[num].lat[++j]='\0';
num++;
}
}
int cmp(const void *p1,const void *p2)
{
return strcmp((*(set *)p1).lat,(*(set *)p2).lat)>0?1:-1;
}
int cmp1(const void *p1,const void *p2)
{
return strcmp((char *)p1,(*(set *)p2).lat);
}
int main()
{
cxbin();
qsort(dictionary,num,sizeof(dictionary[0]),cmp);
char word[15];
while(scanf("%s",word)==1)
{
set *sign;
sign=(set *)bsearch(word,dictionary,num,sizeof(dictionary[0]),cmp1);
if(sign==NULL)
{
printf("eh\n");
}
else
printf("%s\n",sign->fir);
}
return 0;
}