UVA 10282 (13.08.18)

Problem C: Babelfish

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

Input consists of up to 100,000 dictionary entries, followed by a blankline, followed by a message of up to 100,000 words. Each dictionaryentry is a line containing an English word, followed by a space and aforeign language word. No foreign word appears more than once in thedictionary. 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 10lowercase letters.Output is the message translated to English, one word per line. Foreignwords not in the dictionary should be translated as "eh".

Sample Input

dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay

atcay
ittenkay
oopslay

Output for Sample Input

cat
eh
loops


题意: 这么短的题目还用我解释?

解法: 按出题者意思是要用哈希算法, 但是可用STL中的map


AC代码:

 

#include<stdio.h>
#include<iostream>
#include<string>
#include<map>

using namespace std;

char str1[30];
char str2[30];
char str[50];

map<string, string> Map;

int main() {
    Map.clear();

    while(gets(str) != NULL) {
        if(str[0] == '\0')
            break;
        sscanf(str, "%s %s", str1, str2);
        Map[str2] = str1;
    }

    while(scanf("%s", str) != EOF) {
        if(Map.find(str) != Map.end())
            cout<< Map[str] <<endl;
        else
            printf("eh\n");
    }
    return 0;
}


 

 

posted @ 2013-08-19 20:40  pangbangb  阅读(229)  评论(0编辑  收藏  举报