【POJ - 2503】Babelfish (map-两种写法)

 Babelfish

POJ - 2503

 你刚从滑铁卢搬到了大城市。这里的人们讲一种难以理解的外语方言。幸运的是,你有一本字典来帮助你理解它们。

输入

输入包括多达100000个字典条目,然后是一条空白行,然后是多达100000字的信息。每本字典条目都是一行包含一个英语单词,然后是一个空间和一个外语单词。字典中没有外国词出现不止一次。消息是外语单词的序列,每行一个单词。输入中的每个单词最多是 10 个小写字母的序列。

输出

输出是翻译成英语的信息,每行一个单词。字典里没有的外国单词应该翻译成""

示例输入

dog ogday

cat atcay

pig igpay

froot ootfray

loops oopslay

atcay

ittenkay

oopslay

样品输出

cat

eh

loops

提示

建议使用巨大的输入和输出、扫描和打印。

题意描述:给多组数组,每组包含一个英语单词,一个空格一个外语单词,然后给外语单词,输出它对应的英语单词

解题思路:

AC1:先用gets存入数据,然后利用sscanf来把英语单词和外语单词分开,然后利用map存入外语单词,map值为与之对应的英语单词,然后再输入给的外语单词,输出英语单词即可,没有与之对应的输出“eh” 

AC2:不同于上面的sscanf,这个是建立两个字符串来存我们输入的长的带空格的字符串(具体看代码),其它都一样

注意:本题的输入格式

AC1:

#include<cstdio>
#include<map>
#include<iostream>
using namespace std;
map<string,string>x;
int main(void)
{
	char a[100],b[50],c[50];
	while(gets(a)&&a[0]!='\0')
	{
		sscanf(a,"%s %s",b,c);//输入格式 
		x[c]=b;
	}
	while(gets(a))
	{
		if(x.find(a)!=x.end())
			cout<<x[a]<<endl;
		else
			cout<<"eh"<<endl;
	 } 
	return 0;
 } 

AC2

#include<cstdio>
#include<map>
#include<string.h> 
#include<iostream>
using namespace std;
map<string,string>x;
int main(void)
{
	char a[100],b[50],c[50];
	while(gets(a)&&strlen(a)!=0)
	{
	    int i,j,k;	
		for(i=0;a[i]!=' ';i++)
			b[i]=a[i];
		b[i]='\0';
		for(j=i+1,k=0;j<=strlen(a);k++,j++)
			c[k]=a[j];
		x[c]=b;	
}
	while(gets(a))
	{
		if(x.find(a)!=x.end())
			cout<<x[a]<<endl;
		else
			cout<<"eh"<<endl;
	 } 
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/m0_58245389/article/details/120044271
今日推荐