首页 > 代码库 > poj2503(Babelfish)

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 long19 #define int64 __int6420 /***************************************/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         else81             printf("eh\n");82         memset(c,0,sizeof(c));83     }84     return 0;85 }
View Code