POJ 2503 Babelfish(map)

256 篇文章 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值