POJ 2503 Babelfish [map & string]

来源:互联网 发布:淘宝什么叫黑车 编辑:程序博客网 时间:2024/06/05 05:07

Description:

 You have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have a dictionary to help you understand them.

Input

Input consists of up to 100,000 dictionary entries, followed by a blank line, followed by a message of up to 100,000 words. Each dictionary entry is a line containing an English word, followed by a space and a foreign language word. No foreign word appears more than once in the dictionary. The message is a sequence of words in the foreign language, one word on each line. Each word in the input is a sequence of at most 10 lowercase letters.

Output:

Output is the message translated to English, one word per line. Foreign words not in the dictionary should be translated as "eh".

Sample Input:

 dog ogday cat atcay pig igpay froot ootfray loops oopslay atcay ittenkay oopslay

Sample Output:

catehloops   这个题的大意是让你建立一个字典,然后不知道从哪行开始给你单个词,让你把奇怪的词转换成明文。   由于有map容器,建立映射的部分会极其简单,所以这个题的难点是字符串的操作。需要注意的是在明文与暗文间会有一行空白的行,所以我们的任务就剩下拆分字串了。
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<map>using namespace std;int main(){    int i;    char str[15];    string str1,str2,s;    map<string,string> m;    while(gets(str) && strlen(str))    {        str1=str2="\0";        for(i=0;;i++)            if(str[i]==' ')            {                str[i]='\0';                break;            }        str1+=str;        str2+=str+i+1; // ???        m[str2]=str1;        //cout << "str1:" << str1 << "\nstr2:" << str2 <<endl;    }    // 这种拆分的方法比较新奇 效率很高可以学习一下    // 需要注意的是 str要用c风格的字串,原理没太搞懂。。。。。。    while(cin>>s)     {        if(m[s].size())            cout<<m[s]<<endl;        else            cout<<"eh\n";    }    return 0;}
0 0