开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第24天,点击查看活动详情
题目描述
货架中摆放着 n 件商品,每件商品都有两个属性:名称和产地。
当且仅当两件商品的名称和产地都相同时,两件商品才视为同一种商品。
请你统计,货架中一共有多少种不同的商品。
输入格式
第一行包含整数 n。
接下来 n 行,每行包含两个字符串,分别表示一件商品的名称和产地。
输入字符串的长度范围为 [1,10],且仅包含小写字母。
输出格式
一个整数,表示商品种类数量。
数据范围
前 4 个测试点满足 。
所有测试点满足 。
输入样例1:
5
b y
m r
b y
m y
m g
输出样例1:
4
输入样例2:
3
abc def
abc def
abc def
输出样例2:
1
set思路分析
- 众所周知,set是一个好东西,set可以有一个默认的排序,然后set也是一个动态的数组STL容器,它可以容纳基本数据类型
解题步骤:
- 1.我们先创建一个pair对,里面存储两个字符串,命名为PSS
- 2.接着创建一个set,存储PSS
- 3.由于set容器的特性,相同的会抵消,不会二次存储
- 4.输入数据
- 5.输出set的size值
set代码展示
#include<iostream>
#include<set>
using namespace std;
typedef pair<string, string>PSS;
set<PSS>s;
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++) {
string a, b;
cin >> a >> b;
s.insert({ a,b });
}
cout << s.size();
return 0;
}
map思路分析
- 众所周知,map是个好东西,map是一个哈希表,可以用来建立索引和映射,而且对于相同的索引数据,map可以进行去重的操作,所以我们可以建立map来进行索引存储
解题步骤:
- 1.我们先创建一个pair对,里面存储两个字符串,命名为PSS
- 2.接着建立一个map的索引,用来存储PSS和int
- 3.由于map的去重特性,相同的元素会抵消去重
- 4.输出数据
- 5.输出数据
map代码展示
#include<iostream>
#include<map>
using namespace std;
typedef pair<string, string>PSS;
map<PSS, int>mp;
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++) {
string a, b;
cin >> a >> b;
mp[{a, b}] = 1;
}
cout << mp.size();
return 0;
}
PS:STL容器用的舒服啊~