Description
Input
Output
Sample Input
dog ogday cat atcay pig igpay froot ootfray loops oopslay atcay ittenkay oopslay
Sample Output
cat eh loops
Hint
给出每两个字符串,它们代表相同意思的不同语言,给出一种语言的意思,将其转换成另一种语言,如果没有找到,输出“eh”。
解题思路:本题最好采用字典树,估计用时较少,我采用的是二分查找,用时700ms。
代码如下:C/C++代码
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; struct node { char s1[20],s2[20]; } a[100005]; int cmp(node a,node b) { return strcmp(a.s2,b.s2)<0; } int main() { int i,j,low,mid,high,flag=1,len = 0; char s[50]; while(gets(s)) { if(strlen(s)==0) break; sscanf(s,"%s%s",a[len].s1,a[len].s2); len++; } sort(a,a+len,cmp);//按字典序排序 //二分查找 while(gets(s)) { low=0; high=len-1; flag=1; while(low<=high) { int mid =(low+high)>>1; if(strcmp(s,a[mid].s2)==0) { printf("%s\n",a[mid].s1); flag = 0; break; } else if(strcmp(s,a[mid].s2)>0) low=mid+1; else high=mid-1; } if(flag) printf("eh\n"); } return 0; }
原文地址:http://blog.csdn.net/yanghuaqings/article/details/38435981