7-3 垃圾分类 (20分)

据香港《南华早报》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;
}

可以通过但还是慢于第一种方法

原创文章 193 获赞 27 访问量 3万+

猜你喜欢

转载自blog.csdn.net/HdUIprince/article/details/105881803