栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++set 与 map(1)题解(爱思创)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++set 与 map(1)题解(爱思创)

前言:

这篇文章是为了帮助一些

像我这样的菜鸟

找到简单的题解

问题描述: 题目描述

依次读入 n个整数 ai​ ,其中可能存在相同的元素。

对于每次读入的元素 ai​,统计此时它一共出现的次数 ci​,并在最后统计出 n 个元素中一共有多少个不重复的元素。

输入格式

第一行:n (1≤n≤105) 。

第二行:n 个用空格隔开的整数ai​ (−109≤ai​≤109) 。

输出格式

输出共 n+1 行:

  • 第 1∼n 行:输出当前元素 ai​ 及此时 ai​ 出现的次数 ci​,中间用 1 个空格隔开。

  • 第 n+1 行:一个整数,为 n 个元素中不重复元素的个数。

样例输入
7
3 1 5 2 4 3 5
样例输出
3 1
1 1
5 1
2 1
4 1
3 2
5 2
5
问题解析:

这道题非常的简单

思路1: 

用map做

初始化每个元素为0

读入一个就加入一个

思路2: 

用set 与 multiset配合做

一个添加一个计数


本文选择思路一解答

好处:

1.不需要迭代器

2.简单方便


重点:

题目要求输出每一次查询的当前状态

就是这个数前面加上这次它出现了几次

不是总体有几次(我第一次就没看到)

题目代码:

我们还是先把map和变量写好

map mp;//两个都为int 一个为变量名 一个计数
int n,a[100005],i;

然后是读入和初始化

cin>>n;//读入行数
for(i=1;i<=n;i++)//也可以从0开始
{
	cin>>a[i];//读入数组每个元素信息
	mp[a[i]]=0;//mp中添加元素并初始化个数都为0
}

初始化玩了可以直接输出了

计数和输出部分

for(i=1;i<=n;i++)
{
	mp[a[i]]++;//给当前个数加1
	cout<
cout< 
完整代码: 
#include
using namespace std;
map mp;//两个都为int 一个为变量名 一个计数
int n,a[100005],i;
int main()
{
	cin>>n;//读入行数
	for(i=1;i<=n;i++)//也可以从0开始
	{
		cin>>a[i];//读入数组每个元素信息
		mp[a[i]]=0;//mp中添加元素并初始化个数都为0
	}
	for(i=1;i<=n;i++)
	{
		mp[a[i]]++;//给当前个数加1
		cout<
题目测评:

 样例通过了

成功AC
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/989648.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号