你刚从滑铁卢搬到一个大城市。这里的人讲一种难以理解的外语方言。幸运的是,你有一本字典来帮助你理解它们。Input输入内容包括多达100000个字典条目,后面是一个空行,后面是一条多达100000个单词的消息。每个字典条目都是一行,包含一个英语单词,后跟一个空格和一个外语单词。字典里没有外文词出现过一次。信息是外语中的一系列单词,每行一个单词。输入中的每个单词都是最多10个小写字母的序列。Output输出是翻译成英文的消息,每行一个字。字典中没有的外来词应译为“eh”。
Sample Inputdog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay
atcay
ittenkay
oopslay
Sample Outpu
tcat
eh
loops
代码实现
#include<iostream>
#include<map>
#include<cstdio>
#include<string>
using namespace std;
map<string,string>mp;
int main() {
char str1[15],str2[15],d[100];
while(gets(d)&&d[0]!='\0') {
sscanf(d, "%s %s",&str1,&str2);
mp[str2]=str1;
}
char c[15];
while(cin>>c) {
if(mp[c].size()==0) cout<<"eh"<<endl;
else
cout<<mp[c]<<endl;
}
return 0;
}
sscanf输入的用法
https://www.cnblogs.com/hejing-swust/p/7793958.html)
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
banana
band
bee
absolute
acm
ba
b
band
abc
Sample Output
2
3
1
0
代码实现
#include<bits/stdc++.h>
using namespace std;
map<string,int>mp;
int main() {
char str[20];
while(gets(str)) {
int len;
len=strlen(str);
if(len==0)
break;
else
for(int i=len; i>0; i--) {
str[i]='\0';
mp[str]++;
}
}
char c[15];
while(gets(c))
printf("%d\n",mp[c]);
return 0;
}
map函数讲解
https://blog.csdn.net/tsam123/article/details/85222957)