关闭

POJ 2503 Babelfish(map)

263人阅读 评论(0) 收藏 举报
分类:

Description
输入一个字典,字典格式为“英语 外语”的一一映射关系,然后输入若干个外语单词,输出他们的 英语翻译单词,如果字典中不存在这个单词,则输出eh
Input
首先输入一个字典,以空行结束,字典每行两个单词表示英语与外语的一一对应关系,之后是多组查询,每组查询一个外语,以文件尾结束输入
Output
对于每组查询,若字典中存在这个单词则输出其对应的外语,否则输出eh
Sample Input
dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay

atcay
ittenkay
oopslay
Sample Output
cat
eh
loops
Solution
水题,输入时顺便用STL的map标记外语是否出现过,然后再用map建立“外语 英语”的映射,那么输出时先查找“出现”的标记,若有出现过,再输出映射,否则输出“eh”。
Code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
    map<string,string>M;
    string s1,s2,s;
    char str[15];
    while(gets(str)&&strlen(str))//字典输入结束条件 
    {
        s1=s2="\0";
        int i;
        for(i=0;;i++)
            if(str[i]==' ')
            {
                str[i]='\0';
                break;
            }
        s1+=str;//英语 
        s2+=str+i+1;//外语 
        M[s2]=s1;//外语-英语的映射 
    }
    while(cin>>s)//查询输入结束条件 
    {
        if(M[s].size())//字典中存在该单词 
            cout<<M[s]<<endl;
        else//字典中不存在该单词 
            cout<<"eh"<<endl;
    }
    return 0;
} 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:356676次
    • 积分:19541
    • 等级:
    • 排名:第448名
    • 原创:1663篇
    • 转载:0篇
    • 译文:0篇
    • 评论:61条
    最新评论