枚举法:
/*
你刚刚从滑铁卢搬到一个大城市里,这个城市的人们都讲外文,都带着很令人费解的方言,不过很幸运,你有字典可以帮助你理解这些话语。
输入包括100 000个字典条目,紧接着是一个空行,然后便是等待你翻译的信息,每个消息中单次数目最多不超过100 000.每个字典条目都只有一行,包括一个英文单词和一个外文单词,中间使用一个空格隔开。
不会在字典中出现两个相同的外文单词,每个消息都是由一系列的外文单词构成,每个单词占一行,单词最多不会超过10个小写字母。
输出翻译成英文的信息,每行一个单词,字典中没出现的单词翻译成“eh”.
枚举法
*/
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int mm=100010;
class node
{
public:
char e[20],s[20]; //e 表示的是字典中英语, s表示字典中的外文
}dic[mm]; //定义结构体从而省却使用二维数组
char t[20];
int pos;
int main()
{
pos=0;
char z;
while(scanf("%s%c",dic[pos].e,&z)!=EOF) //此地不能用cin,因为cin不能输入空格
{
if(z=='\n')
{
strcpy(t,dic[pos].e);
break; //一旦输入的回车的话则会跳出该循环,输入到此结束
}
cin>>dic[pos++].s;
}
int num=-1;
for(int i=0;i<pos;i++) //在这的这个是为了上面的结束循环是出现的t来进行判断的,上面结束循环时会有一个赋值
if(strcmp(t,dic[i].s)==0)
num =i;
if(num>=0)
printf("%s\n",dic[num].e);
else
puts("eh");
while(cin>>t)
{
num=-1;
for(int i=0;i<pos;i++)
if(strcmp(t,dic[i].s)==0)
num = i;
if(num>=0)
cout<<dic[num].e<<endl;
else
cout<<"eh"<<endl;
}
return 0;
}