Babelfish
Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 62712 Accepted: 25464 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 oopslaySample Output
cat eh loopsHint
Huge input and output,scanf and printf are recommended.Source
注意对输入的处理。sscanf()函数用于从字符串中读取指定格式的数据
map里的find函数很适合来处理这种题目。把要查找的放在first的位置
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<map>
using namespace std;
const int N= 100010;
map<string,string>kk;
char a[N],b[N],c[N];
int main()
{
while(gets(c),c[0]!='\0')
{
sscanf(c,"%s%s",a,b);//对于输入的处理
kk[b]=a;
}
while(gets(a))
{
if(kk.find(a)!=kk.end())//查找到了
{
cout<<kk[a]<<endl;
}
else//没有查找到
{
printf("eh\n");
}
}
return 0;
}
这篇博客介绍了一个大型城市中的语言挑战,作者利用字典进行翻译。程序通过读取字典文件并建立映射,然后处理输入的外语单词,如果找到对应英文则输出,否则输出“eh”。程序处理了大量输入和输出,使用了scanf和printf函数以适应大文件,并利用了C++的map数据结构。
24

被折叠的 条评论
为什么被折叠?



