Babelfish
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
cat eh loops
这题就是map的映射,但是接收数据的方式要三思一下。
#include<cstdio>
#include<string>
#include<cstring>
#include<map>
using namespace std;
map<string,string> st;
int main()
{
char ch[100],ch1[50],ch2[50];
string s1,s2;
for(;gets(ch)!=NULL;)
{
if(strlen(ch)==0) break;
sscanf(ch,"%s%s",ch1,ch2);
s1=string(ch1);
s2=string(ch2);
st.insert(make_pair(s2,s1));
}
for(;scanf("%s",ch1)!=EOF;)
{
s1=string(ch1);
if(st.count(s1)==0)
printf("eh\n");
else
printf("%s\n",st.find(s1)->second.c_str());
}
return 0;
}
本文探讨了一道POJ编程问题,主题为Babelfish,即通过使用C++编程语言,将一个不可理解的外国方言转换为英语。文章详细解释了如何构建映射,包括输入处理、字典构建和最终的翻译过程。重点在于高效的数据结构应用,特别是使用map来存储和查找词汇。
655





