ZISUOJ 2022年算法基础公选课练习四(Map)

news2024/11/30 2:34:07

说明:

        博主为了提早预习数据结构和C++的一些知识,自己琢磨外加查阅资料所写的代码,题目来源于22年初的学院老师组织的算法基础公选课的练习。我的代码甚至思路肯定存在许多不足和错误,欢迎大家批评指正。

题目列表:

问题 A: 数据排序——统计数字 

思路:

        开一个map<int,int>的map,键对应出现的数字,值对应键的值出现的次数,一旦出现一个数,则把该数的出现次数加1,最后遍历输出即可。值得注意的是,map默认是从小到大排列的,如果是string类型,那么默认是按字典序从小到大排列的,这跟它内部的实现有关。

参考题解:
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
map<int,int> mp;
void solve(){
    int n;cin >> n;
    int num;
    while(n--){
    	cin >> num;
    	mp[num]++;
	}
	for(auto &it:mp) cout << it.first << ' ' << it.second << endl;
}
signed main(){
	//问题 A: 数据排序——统计数字
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int _ = 1;
//    cin >> _;
    while (_--){
        solve();
    }
    return 0;
}

问题 B: c++和stl入门——数单词

 

思路:

        同理,开一个map<string,int>的map,键对应出现的单词,值对应该单词出现的次数,一旦出现一个单词,则把该单词的出现次数加1,最后遍历输出即可。

参考题解:
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
map<string,int> mp;
void solve(){
    int n;cin >> n;
    string s;
    while(n--){
    	cin >> s;
    	mp[s]++;
	}
	int maxn=0;string maxs;
	for(auto &it:mp){
		if(it.second>maxn){
			maxn = it.second;
			maxs = it.first;
		}
	}
	cout << maxs << endl;
}
signed main(){
	//问题 B: c++和stl入门——数单词
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int _ = 1;
//    cin >> _;
    while (_--){
        solve();
    }
    return 0;
}

问题 C: 数据排序——众数

思路:

        与A题思路相同,只不过输出的时候只输出出现次数最多的数(可能不止1个)和出现次数。

参考题解:
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
map<int,int> mp;
void solve(){
	int n;cin >> n;
	int num;
	while(n--){
		cin >> num;
		mp[num]++;
	}
	int maxn=0;
	for(auto &it:mp) if(it.second>maxn) maxn=it.second;
	for(auto &it:mp) if(maxn==it.second) cout << it.first << "  " << it.second << endl;
}
int main(){
	//问题 C: 数据排序——众数
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int T=1;
//	cin >> T;
	while(T--) solve();
	return 0;
}

问题 D: 不重复地输出数

思路:

        其实这个题用set做更合适、直观一些,但是放在map的习题里面,那我们就用map做吧。同理,出现过的数字就输出,出现多次的只输出一次即可。

参考题解:
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
map<int,int> mp;
void solve(){
    int n;cin >> n;
    int num;
    while(n--){
    	cin >> num;
    	mp[num]++;
	}
	for(auto &it:mp) cout << it.first << ' ';
	cout << endl;
}
signed main(){
	//问题 D: 不重复地输出数
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int _ = 1;
//    cin >> _;
    while (_--){
        solve();
    }
    return 0;
}

问题 E: 最高分数的学生姓名

思路:

        开一个map<string,int>,键存放学生的名字,值存放其的成绩,然后遍历map名字打擂台查找最高分,然后再遍历一遍map输出最高分的名字。

参考题解:
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
map<string,int> mp;
void solve(){
    int n,score;cin >> n;
    string name;
    while(n--){
    	cin >> score >> name;
		mp[name] = score;
	}
	int maxscore = 0;
	for(auto &it:mp) if(it.second>maxscore) maxscore = it.second;
	for(auto &it:mp) if(it.second==maxscore) cout << it.first << endl;
}
signed main(){
	//问题 E: 最高分数的学生姓名
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int _ = 1;
//    cin >> _;
    while (_--){
        solve();
    }
    return 0;
}

问题 F: 水果

思路:

        这题好在我在期末考前刷到过,但是当时没学map没写出来,期末考的时候用结构体数组加sort()函数写出来了,现在回过头看看这个题用map来写是真的很简单。map根据字符串按字典序从小到大排序的特点,我们无需对内部数据再进行排序了,直接读入,然后遍历输出即可。

参考题解:
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
map<string,map<string,int> > mp;
void solve(){
    int n,num;cin >> n;
    string fruit,province;
    mp.clear();
    while(n--){
    	cin >> fruit >> province >> num;
		mp[province][fruit] += num;
	}
    for(auto &it1:mp){
    	cout << it1.first << endl;
    	for(auto &it2:it1.second) cout << "   |----" << it2.first << '(' << it2.second << ')' << endl;
	}
    cout << endl;
}
signed main(){
	//1332: 水果
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int _ = 1;
    cin >> _;
    while (_--){
        solve();
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1449927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统-408

一、操作系统概述 1、定义 负责协调软件和硬件的计算机资源的工作为上层应用提供简易的服务操作系统是系统软件 2、功能&#xff1a; 操作系统是系统资源的管理者 处理机管理存储器管理文件管理设备管理向上层提供方便易用的服务 命令接口程序接口对硬件机器的扩展 3、特征…

(四十)大数据实战——Zabbix监控平台的部署搭建

前言 Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制&#xff0c;允许用户为几乎任何事件配置基于邮件的告警&#xff0c;这样可以快速反馈服务器的问题。基于已存储的数据&#xff0c;Zabbix提供了出色的报告和数据可视化功能。…

OpenGL-ES 学习(1)---- AlphaBlend

AlphaBlend OpenGL-ES 混合本质上是将 2 个片元的颜色进行调和(一般是求和操作)&#xff0c;产生一个新的颜色 OpenGL ES 混合发生在片元通过各项测试之后&#xff0c;准备进入帧缓冲区的片元和原有的片元按照特定比例加权计算出最终片元的颜色值&#xff0c;不再是新&#xf…

PR:剪辑工具的使用

这些是剪辑工具&#xff1a; 选择工具 用来选择、拉伸或者拖拽用&#xff0c;如果放置到片段开头和结尾处会变成红色带箭头的方框&#xff0c;可以拉升或者缩短片段的时长 如果缩短的话&#xff0c;两段视频之间会出现空挡 可以点击空挡处&#xff0c;右键点击删除波纹&#xf…

Java毕业设计-基于ssh的网上电子商城管理系统-第74期

获取源码资料&#xff0c;请移步从戎源码网&#xff1a;从戎源码网_专业的计算机毕业设计网站 项目介绍 基于ssh的网上电子商城管理系统&#xff1a;前端jsp、js&#xff0c;后端 struts、spring、hibernate&#xff0c;集成商品浏览&#xff0c;商品详情&#xff0c;购物车&…

【Apache Superset】从概述、安装到运用,一篇掌握!

文章目录 什么是 Superset&#xff1f;Superset 的优势安装安装 Anaconda 包管理工具创建 Superset 的 Python 环境 下载 Superset 依赖更新工具安装 Superset配置 MySQL 元数据库初始化 Superset 数据库报错一报错二报错三数据库初始化完成 初始化 Superset报错一警告信息 启动…

【顶刊|修正】多区域综合能源系统热网建模及系统运行优化【复现+延伸】

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序复现《多区域综合能源系统热网建模及系统运行优化》模型并进一步延伸&#xff0c;基于传热学的基本原理建立了区域热网能量传输通用模型&#xff0c;对热网热损方程线性化实现热网能量流建模&#xff…

VueCLI核心知识1:ref属性、props配置、mixin混入

1 ref 属性 ref属性类似于js原生获取DOM元素 <template><div><h1 v-text"msg" ref"title"></h1><button click"showDom">点我输出上方的Dom元素</button><School ref"sch"></School>…

消息队列RabbitMQ-使用过程中面临的问题与解决思路

消息队列在使用过程中会出现很多问题 首先就是消息的可靠性&#xff0c;也就是消息从发送到消费者接收&#xff0c;消息在这中间过程中可能会丢失 生产者到交换机的过程、交换机到队列的过程、消息队列中、消费者接收消息的过程中&#xff0c;这些过程中消息都可能会丢失。 …

UnityShader玉石效果

效果&#xff1a; 代码&#xff1a; Shader "MyShader/Jade" {Properties{_DiffuseColor("漫反射颜色",color)(1,1,1,1)_ThicknessMap("厚度图",2d)"white"{}_AddColor("叠加颜色",color)(1,1,1,1)_CubeMap("环境贴图…

【C++】const、static关键字和构造函数初始化

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 1. const修饰成员函数 1.1 语法格式 1.2 权限放大缩小 1.3 思考 1.4 解答 2. 再谈构造函数 2.1 构造函数体赋值 2.2 初始…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Navigation组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Navigation组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Navigation组件 鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#…

Mybatis开发辅助神器p6spy

Mybatis什么都好&#xff0c;就是不能打印完整的SQL语句&#xff0c;虽然可以根据数据来判断一二&#xff0c;但始终不能直观的看到实际语句。这对我们想用完整语句去数据库里执行&#xff0c;带来了不便。 怎么说呢不管用其他什么方式来实现完整语句&#xff0c;都始终不是Myb…

相机图像质量研究(18)常见问题总结:CMOS期间对成像的影响--CFA

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

B2科目二考试项目笔记

B2科目二考试项目笔记 1 桩考1.1 右起点倒库1.2 移库&#xff08;左→右&#xff09;1.3 驶向左起点1.4 左起点倒库1.5 驶向右起点 2 侧方停车考试阶段&#xff08;从路边开始&#xff09;&#xff1a; 3 直角转弯4 坡道定点停车和起步5 单边桥6 通过限速限宽门7 曲线行驶8 连续…

每日五道java面试题之java基础篇(六)

目录&#xff1a; 第一题&#xff1a;Java 创建对象有哪⼏种⽅式&#xff1f;第二题 .Integer a 127&#xff0c;Integer b 127&#xff1b;Integer c 128&#xff0c;Integer d 128&#xff1b;相等吗?第三题.Object 类的常⻅⽅法?第四题 List和Set的区别第五题 ArrayList和…

代码解读:Stable Video Diffusion 中对运动程度的控制

Diffusion Models视频生成-博客汇总 前言&#xff1a;在SVD中&#xff0c;对运动的控制可以分成对镜头运动的控制和对内容运动的控制&#xff0c;这篇博客详细通过代码讲解如何对内容运动的控制。 目录 方法一&#xff1a;motion_bucket_id 简述 代码解读 方法二&#xff1…

【Linux】yum软件包管理器

目录 Linux 软件包管理器 yum 什么是软件包 Linux安装软件 查看软件包 关于rzsz Linux卸载软件 查看yum源 扩展yum源下载 Linux开发工具 vim编辑器 上述vim三种模式之间的切换总结&#xff1a; 命令模式下&#xff0c;一些命令&#xff1a; vim配置 Linux 软件包管理…

BUGKU-WEB 社工-初步收集

题目描述 题目截图如下&#xff1a; 描述:其实是杂项&#xff0c;勉强算社工吧。来自当年实战 进入场景看看&#xff1a; 解题思路 做题先看源码关注可下载的资源(zip压缩包)抓包寻找可能存在的加密信息&#xff08;base64&#xff09;不管三七二十一先扫描目录再说 ps&…

【小记】MacOS Install golang

问题 - command not found: go ➜ brew install golang ➜ go version go version go1.21.7 darwin/arm64写在最后&#xff1a;若本文章对您有帮助&#xff0c;请点个赞啦 ٩(๑•̀ω•́๑)۶