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

说明:

        博主为了提早预习数据结构和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.mzph.cn/news/683979.shtml

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

相关文章

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核基础-互斥锁mux

目录 一、互斥锁基本概念二、互斥锁运行机制三、互斥锁开发流程四、互斥锁使用说明五、互斥锁接口六、代码分析&#xff08;待续...&#xff09; 一、互斥锁基本概念 互斥锁又称互斥型信号量&#xff0c;是一种特殊的二值性信号量&#xff0c;用于实现对共享资源的独占式处理。…

STM32——OLED菜单(二级菜单)

文章目录 一.补充二. 二级菜单代码 简介&#xff1a;首先在我的51 I2C里面有OLED详细讲解&#xff0c;本期代码从51OLED基础上移植过来的&#xff0c;可以先看完那篇文章&#xff0c;在看这个&#xff0c;然后按键我是用的定时器扫描不会堵塞程序,可以翻开我的文章有单独的定时…

Flutter Android开发 梳理Google Material Design颜色体系

前言 做安卓开发&#xff08;Kotlin语言&#xff09;&#xff0c;Flutter开发的人员应该都听说过谷歌一直推崇的Material Design&#xff0c;而Material Design Color是其推崇的颜色体系&#xff0c;具体来说&#xff0c;Material Design Color是一套旨在帮助设计师和开发者创…

Panalog 日志审计系统 libres_syn_delete.php 前台RCE漏洞复现

0x01 产品简介 Panalog是一款日志审计系统,方便用户统一集中监控、管理在网的海量设备。 0x02 漏洞概述 Panalog日志审计系统 libres_syn_delete.php接口处存在远程命令执行漏洞,攻击者可执行任意命令,接管服务器权限。 0x03 影响范围 version <= MARS r10p1Free 0…

java+springboot+vue试题库在线学习系统05umj

技术路线&#xff1a; B/S架构&#xff0c;后端springboot框架&#xff0c;前端Vue.js框架。 主要功能模块&#xff08;至少六大功能&#xff09;&#xff0c;参考任务书并拓展 &#xff08;1&#xff09;用户管理模块&#xff1a;规定不同角色的用户对系统中各个功能模块的使用…

【经验】JLINK无法(单步)调试,JLINK固件的烧写

昨天终于准备开始进行S3C6410的裸机开发&#xff0c;写好了程序&#xff0c;编译生成了.axf文件&#xff0c;一切顺利的准备利用JLINK进行在线调试了&#xff0c;突然有种成功就在前面的感觉&#xff0c;Jlink也能被电脑正常的识别&#xff0c;利用AXD进行Jlink的相关设置也很正…

安卓自定义画板

包含功能&#xff1a; 包含 获取当前画板的截图、设置画笔样式、获取画笔样式、设置画笔宽度、获取画笔宽度、设置画笔颜色、获取画笔颜色、加载图片、获取图片位图对象、设置图片位图对象&#xff0c;并在画布上绘制图片、撤销上一步操作、重做上一步撤销的操作、清空所有绘图…

Dirty PageTable

前言 Dirty PageTable 是一种针对堆相关漏洞的利用手法&#xff0c;主要就是针对 PTE 进行攻击。 参考文章&#xff1a; Dirty Pagetable: A Novel Exploitation Technique To Rule Linux Kernel – 该利用方式提出原文 上述文章已经讲的非常清楚了&#xff0c;就是实操写 e…

挑战杯 python区块链实现 - proof of work工作量证明共识算法

文章目录 0 前言1 区块链基础1.1 比特币内部结构1.2 实现的区块链数据结构1.3 注意点1.4 区块链的核心-工作量证明算法1.4.1 拜占庭将军问题1.4.2 解决办法1.4.3 代码实现 2 快速实现一个区块链2.1 什么是区块链2.2 一个完整的快包含什么2.3 什么是挖矿2.4 工作量证明算法&…

CentOS7.9+Kubernetes1.29.2+Docker25.0.3高可用集群二进制部署

CentOS7.9Kubernetes1.29.2Docker25.0.3高可用集群二进制部署 Kubernetes高可用集群&#xff08;Kubernetes1.29.2Docker25.0.3&#xff09;二进制部署二进制软件部署flannel v0.22.3网络&#xff0c;使用的etcd是版本3&#xff0c;与之前使用版本2不同。查看官方文档进行了解…

红队打靶练习:HACK ME PLEASE: 1

信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.61.128 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.61.2 00:50:56:f0:df:20 …

大学建筑专业的搜题软件?大学搜题工具中的高级搜索功能有哪些? #学习方法#微信#经验分享

学习和考试是大学生生活中不可避免的一部分&#xff0c;而在这个信息爆炸的时代&#xff0c;如何快速有效地获取学习资源和解答问题成为了大学生们共同面临的难题。为了解决这个问题&#xff0c;搜题和学习软件应运而生。今天&#xff0c;我将为大家介绍几款备受大学生青睐的搜…

Python魔法方法 单例模式

前言 本文介绍一下python中常用的魔法方法以及面向对象中非常重要的单例模式。 魔法方法 python中一切皆对象&#xff0c;因为python是面向对象的编程语言。python给类和对象提供了大量的内置方法&#xff0c;这些内置方法也称魔法方法。这些魔法方法总是在某种条件下自动触…

探索设计模式的魅力:创建型设计模式的比较与决策

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、设计模式概览 1.1 创建型模式 二、比较创建型设计模式 1.1 适用场景典型用例 1.2 关键要素与差异对比 1.3 结构图 三、模式选择指南 3.1 场景分析 3.2 决策流程图 四、结语 4.1 优势 4.2 考量因素 一、…

node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查

文章目录 ⭐前言⭐ 功能设计与实现💖 node后端操作数据库实现增删改查💖 vue3前端实现增删改查⭐ 效果⭐ 总结⭐ 结束⭐结束⭐前言 大家好,我是yma16,本文分享关于 node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查。 技术选型 前端:vite+vue3+antd 后端:…

使用radial-gradient完成弧形凹陷的绘制

1、效果如下图 我在微信小程序中制作的 2、代码如下 <style>.header {position: relative;width: 200px;height: 200px;overflow: hidden;}.header .circle {--circleValue: 500px;position: absolute;bottom: 0;left: 50%;width: 100%;height: var(--circleValue);trans…

[OPEN SQL] 修改数据

MODIFY语句用于修改数据库表中的数据 MODIFY拥有INSERT和UPDATE的操作&#xff0c;如果数据库表中不存在符合条件的数据则会添加该条新数据&#xff0c;反之数据库表中存在符合条件的数据则会更新该条数据 本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航…

【git】.gitignore 的匹配规则

每行一个规则&#xff1a;每行只能包含一个规则&#xff0c;多个规则需要分别写在不同的行上。 示例&#xff1a; # 忽略日志文件 logs/ # 忽略临时文件 temp.txt种类匹配&#xff1a; 文件&#xff1a;在规则的开头指定文件名或路径&#xff0c;如 file.txt。 示例&#xff1a…

HGAME2024 WEEK2 wp webmisc

web What the cow say? 进入容器有个输入框&#xff0c;尝试ssti、命令执行、代码执行等&#xff0c;最后发现可使用反引号执行命令&#xff1b; 输入 nl app.py 可查看源代码&#xff0c;有功能具体实现、过滤之类的&#xff1b; flag在 /flag_is_here home/flag_c0w54y 中…

每日OJ题_递归②_力扣21. 合并两个有序链表

目录 力扣21. 合并两个有序链表 解析代码 力扣21. 合并两个有序链表 21. 合并两个有序链表 难度 简单 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4]…