据香港《南华早报》2019年7月15日文章,上海严格的垃圾分类新规令不少居民抓狂。这催生出大量帮助找出正确分类答案的App和小程序。目前仅微信上就至少有280种与垃圾处理有关的App,在苹果应用商店也达130种。支付宝表示,已有60多家独立App开发商申请为该平台提供类似服务。
本题就请你现场实现一个简单的垃圾分类小助手。
输入格式:
输入首先给出官方分类指南中每种物品的归属。在一行中给出一个正整数 N(≤105),即物品数量;随后 N 行,每行给出一个物品名称(长度不超过 10 的、由小写英文字母和下划线组成的字符串)和该物品所属的分类(1 代表干垃圾、2 代表湿垃圾、3 代表可回收物、4 代表有害垃圾)。题目保证所有物品名称无重复。
随后每行给出一个查询物品的名称(格式与指南物品名称相同)。最后一行给出结束符 #
,表示查询终止,这一行不需要查询。
输出格式:
对每个查询的物品,在一行中给出其所属分类:Gan laji
代表干垃圾;Shi laji
代表湿垃圾;Ke Hui Shou
代表可回收物;You Hai laji
代表有害垃圾。如果查询的物品不在指南中,则输出 ?
表示不知道。
输入样例:
4
bao_zhi 3
dian_chi 4
dan_ke 2
bei_ke 1
dan_ke
dian_chi
ren_zha
bao_zhi
bei_ke
#
输出样例:
Shi laji
You Hai laji
?
Ke Hui Shou
Gan laji
题意
思路1
代码1
#include <iostream>
#include <unordered_map>
using namespace std;
const int N = 10010;
string kind[4] = {"Gan laji", "Shi laji", "Ke Hui Shou", "You Hai laji"};
unordered_map<string, int> mp;
int main()
{
int n;
scanf("%d", &n);
char s[15];
for(int i = 0; i < n; i++)
{
int t;
scanf("%s%d", &s, &t);
string str(s);
mp[str] = t - 1;
}
while(scanf("%s", &s))
{
string qu(s);
if(qu == "#")
break;
if(mp.count(qu))
printf("%s\n", kind[mp[qu]].c_str());
else
printf("?\n");
}
return 0;
}
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
const int N = 10010;
string kind[4] = {"Gan laji", "Shi laji", "Ke Hui Shou", "You Hai laji"};
unordered_map<string, int> mp;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
for(int i = 0; i < n; i++)
{
string str;
int t;
cin >> str >> t;
mp[str] = t - 1;
}
string qu;
while(cin >> qu && qu != "#")
{
if(mp.count(qu))
cout << kind[mp[qu]] <<endl;
else
cout << "?" << endl;
}
return 0;
}
可以通过但还是慢于第一种方法