Description
Input
Output
Sample Input
dog ogday cat atcay pig igpay froot ootfray loops oopslay atcay ittenkay oopslay
Sample Output
cat eh loops
咋看是字典树,但是我在搜二分专题的时候看到的这道题,那么这道题肯定能用二分解决
思路很好想,运用到了sscanf函数
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; struct node { char s1[20],s2[20]; } a[100005]; int len; int cmp(node a,node b) { return strcmp(a.s2,b.s2)<0; } int main() { len = 0; int i,j; char str[50]; while(gets(str)) { if(str[0] == '\0') break; sscanf(str,"%s%s",a[len].s1,a[len].s2); len++; } sort(a,a+len,cmp); while(gets(str)) { int l = 0,r= len-1,mid,flag = 1; while(l<=r) { int mid = (l+r)>>1; if(strcmp(str,a[mid].s2)==0) { printf("%s\n",a[mid].s1); flag = 0; break; } else if(strcmp(str,a[mid].s2)<0) r = mid-1; else l = mid+1; } if(flag) printf("eh\n"); } return 0; }
POJ2503:Babelfish(二分),布布扣,bubuko.com
原文地址:http://blog.csdn.net/libin56842/article/details/38307085