题目地址:Babelfish
题目大意:
你将要迁徙一个大城市里,但是你们的语言不一样。但是幸运的是你有一本字典,通过你的字典可以翻译外国的语言。每一行先是字典的单词接着是外国语言。 字典输完,给你几个外国语言,输出字典的单词否则输出“eh”。
解题思路:
map将每一行的单词mp一个整数,这整数可以是序列号,这样你找到对应的mp数值就很容易输出。注意输入输出即可。
代码:
1 #include <algorithm> 2 #include <iostream> 3 #include <sstream> 4 #include <cstdlib> 5 #include <cstring> 6 #include <cstdio> 7 #include <string> 8 #include <bitset> 9 #include <vector> 10 #include <queue> 11 #include <stack> 12 #include <cmath> 13 #include <list> 14 #include <map> 15 #include <set> 16 using namespace std; 17 /***************************************/ 18 #define ll long long 19 #define int64 __int64 20 /***************************************/ 21 const int INF = 0x7f7f7f7f; 22 const double eps = 1e-8; 23 const double PIE=acos(-1.0); 24 const int d1x[]= {0,-1,0,1}; 25 const int d1y[]= {-1,0,1,0}; 26 const int d2x[]= {0,-1,0,1}; 27 const int d2y[]= {1,0,-1,0}; 28 const int fx[]= {-1,-1,-1,0,0,1,1,1}; 29 const int fy[]= {-1,0,1,-1,1,-1,0,1}; 30 /*vector <int>map[N];map[a].push_back(b);int len=map[v].size();*/ 31 /***************************************/ 32 void openfile() 33 { 34 freopen("data.in","rb",stdin); 35 freopen("data.out","wb",stdout); 36 } 37 /**********************华丽丽的分割线,以上为模板部分*****************/ 38 const int M=100001; 39 char s1[M][15],s2[M][15],c[15]; 40 int main() 41 { 42 int i,j,d=1,cnt=0; 43 memset(s1,0,sizeof(s1)); 44 memset(s2,0,sizeof(s2)); 45 memset(c,0,sizeof(c)); 46 map<string,int>mp; 47 while(d) 48 { 49 for(j=0;;j++) 50 { 51 scanf("%c",&s1[d][j]); 52 if (s1[d][j]==' '||s1[d][j]==' ') 53 break; 54 } 55 if (s1[d][j]==' ') 56 break; 57 for(j=0;;j++) 58 { 59 scanf("%c",&s2[d][j]); 60 if (s2[d][j]==' ') 61 break; 62 } 63 mp[s2[d]]=d; 64 d++; 65 } 66 while(scanf("%c",&c[0])!=EOF) 67 { 68 if (c[0]==' ') 69 break; 70 int i; 71 for(i=1;;i++) 72 { 73 scanf("%c",&c[i]); 74 if (c[i]==' ') 75 break; 76 } 77 int v=mp[c]; 78 if (v>0&&v<d) 79 printf("%s ",s1[v]); 80 else 81 printf("eh "); 82 memset(c,0,sizeof(c)); 83 } 84 return 0; 85 }