poj2503(Babelfish)

题目地址: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]=='\n')
53                  break;
54         }
55         if (s1[d][j]=='\n')
56             break;
57         for(j=0;;j++)
58         {
59              scanf("%c",&s2[d][j]);
60              if (s2[d][j]=='\n')
61                  break;
62         }
63         mp[s2[d]]=d;
64         d++;
65     }
66     while(scanf("%c",&c[0])!=EOF)
67     {
68         if (c[0]=='\n')
69             break;
70         int i;
71         for(i=1;;i++)
72         {
73             scanf("%c",&c[i]);
74             if (c[i]=='\n')
75                 break;
76         }
77         int v=mp[c];
78         if (v>0&&v<d)
79             printf("%s\n",s1[v]);
80         else
81             printf("eh\n");
82         memset(c,0,sizeof(c));
83     }
84     return 0;
85 }
View Code
posted @ 2014-07-25 11:09  kinghold  Views(207)  Comments(0Edit  收藏  举报