算法实验作业记录(C++)

1. 藏书问题:

小明藏书真可谓汗牛充栋,现在有一道难题问:小明到底有多少本不一样的书,每样书的名字是什么,因为有的书名是样的,我们把他视为同样的书。
在这里插入图片描述
4
English
Math
Chinese
Chinese

样例输出
3
Chinese 2
English 1
Math 1
代码如下:

//map集合
#include<iostream>
#include<map>
#include<string>
using namespace std;

int main() {
   
   
	int n;
	string name;
	/*char name[101];*/
	map<string,int> books;
	cin >> n;
	for (int i = 0; i < n; i++) {
   
   
		cin >> name;
		books[name]++;
	}
	cout << books.size() << endl;
	map<string, int>::iterator it;
	for (it = books.begin(); it != books.end(); it++) {
   
   
		cout << it->first << ":\t" << it->second << endl;
	}
	return 0;
}

输出结果

2. 破案问题:

在这里插入图片描述
样例输入
3 2
166 50 30
178 60 23
132 40 15
167 50 30
178 60 23

样例输出
no
yes
代码如下:

//set集合,遍历criminal,man.count()
#include<iostream>
#include<set>
#include <string>

using namespace std;

int main() {
   
   
	int m, n;
	string people;
	cin >> m >> n;
	set<string> man, criminal;
	getchar();//吸收缓冲区
	for (int i = 0; i < m; i++) {
   
   
		getline(cin, people);
		man.insert(people);
	}
	for (int i = 0; i < n; i++) {
   
   
		getline(cin, people);
		criminal.insert(people);
	}
	for (auto it = criminal.begin(); it != criminal.end(); ++it) {
   
   
		if (man.count(*it) == 1) {
   
   
			cout << "yes" << endl;
		}
		else
		{
   
   
			cout << "no" << endl;
		}
	}
	return 0;
}

输出结果

3. 重复最大值

给定n个整数,求里面出现次数最多的数,如果有多个重复出现的数,求值最大的那个。

输入样例1
5
1 1 2 3 4

输出样例1
1 2
在这里插入图片描述

//map集合自动排序,小->大,出现次数
#include<iostream>
#include<map>
using namespace std;
int main() {
   
   
	int n;
	map <int, int> num;//默认情况下map根据键的大小采用升序排序
	cin >> n;
	for (int i = 0,x; i < n; ++i) {
   
   
		cin >> x;
		num[x]++;
	}
	int max = 0, sum = -1;
	for (map<int,int>::iterator it = num.begin();it != num.end();it++) {
   
   
		if (it->second >=sum) {
   
   //因为map已经排好序,所以只需要注意数出现的次数
			sum = it->second;
			max = it->first;
		}
	}
	cout << max << "\t" << sum << endl;
	return 0;
}

输出结果

4. 水果明细表

告诉你每一笔销售记录的水果名称、产地和销售的数量,请生产明细表。

输入样例:
5
apple shandong 3
pineapple guangdong 1
sugarcane guangdong 1
pineapple guangdong 3
pineapple guangdong 1
输出样例
guangdong
|----pineapple(5)
|----sugarcane(1)
shandong
|----apple(3)

//map<产地,map<水果,数量>>
#include<iostream>
#include<map>
#include<set>
#include <string>

using namespace std;
int main() {
   
   
	int n;
	set<string> poo;//place of origin 
	set<string> fruit;
	map<string,map<string
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

twfplayer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值