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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python Matplotlib 的学习笔记

Python Matplotlib 的学习笔记 0. Python Matplotlib 简介1. 为什么要用 Matplotlib&#xff1f;2. Matplotlib 基础类详解2-1. Line&#xff08;线&#xff09;2-2. Marker&#xff08;标记&#xff09;2-3. Text&#xff08;文本&#xff09;2-4. Legend&#xff08;图例&…

安卓价值1-如何在电脑上运行ADB

ADB&#xff08;Android Debug Bridge&#xff09;是Android平台的调试工具&#xff0c;它是一个命令行工具&#xff0c;用于与连接到计算机的Android设备进行通信和控制。ADB提供了一系列命令&#xff0c;允许开发人员执行各种操作&#xff0c;包括但不限于&#xff1a; 1. 安…

5种风格非常经典的免费wordpress主题

免费wordpress主题下载 高端大气上档次的wordpress主题&#xff0c;也可以是免费的&#xff0c;可以在线免费下载。 https://www.wpniu.com/themes/288.html wordpress免费主题 高端大气的wordpress免费主题&#xff0c;LOGO在顶部左侧&#xff0c;导航菜单在顶部右侧。 ht…

如何流畅进入Github

前言 以下软件是免费的&#xff0c;放心用 一、进入右边的下载链接https://steampp.net/ 二、点击下载 三、点击接受并下载 四、随便选一个下载链接进行下载 五、软件安装好打开后&#xff0c;找到Github 六、点击全部启用 七、再点击左上角的一键加速 八、这个时候你再进Git…

idea启动不起来

把进程杀了就好了 taskkill /pid 9744 -f

支付交易——跨境交易

摘要 老王兢兢业业经营生意多年&#xff0c;一步步从小杂货店做到现在&#xff0c;成立大型贸易公司。在做大做强的过程中&#xff0c;老王觉得国内市场已经饱和&#xff0c;竞争处处是红海。老王留意海外很多年了&#xff0c;决定走出去&#xff0c;转向海外:将国外的商品引进…

腾讯云4核8G服务器3年600元?

腾讯云4核8G服务器3年600元&#xff1f;目前的价格是轻量应用服务器4核8G12M带宽一年446元、646元15个月&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;标准型SA2服务器1444.8元一年&#xff0c;在txy.wiki可以查询详细…

坚持刷题|重建二叉树

文章目录 题目考察点代码实现实现总结扩展问题从前序和中序遍历中序列构建二叉树题目代码实现与后序实现的异同点 前序和后序可不可以唯一确定一棵二叉树呢&#xff1f; Hello&#xff0c;大家好&#xff0c;我是阿月。坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;今天刷…

机器学习12-基本感知器

感知器(Perceptron)是一种最简单的人工神经网络结构,由美国心理学家Frank Rosenblatt在1957年提出。它是一种单层的前馈神经网络,通常用于二分类问题。 基本感知器由多个输入节点、一个输出节点和一组权重参数组成。每个输入节点都与输出节点连接,并且具有一个对应的权重参…

尚硅谷最新Node.js 学习笔记(一)

目录 一、Nodejs入门 1.1、为什么要学习Nodejs&#xff1f; 1.2、Nodejs是什么&#xff1f; 1.3、Nodejs的作用 1.4、Nodejs安装 1.5、Nodejs初体验 1.6、编码注意事项 二、Buffer&#xff08;缓冲器&#xff09; 2.1、概念 2.2、特点 2.3、使用 创建Buffer Buffe…

【AI视野·今日CV 计算机视觉论文速览 第299期】Mon, 29 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Mon, 29 Jan 2024 Totally 55 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Annotated Hands for Generative Models Authors Yue Yang, Atith N Gandhi, Greg TurkGAN 和扩散模型等生成模型已经展示了…

如何用 ChatGPT 做项目管理?

ChatGPT 可以通过创建和维护跨团队项目协作计划&#xff0c;让员工更容易理解他们的角色和职责。 这个协作计划里面会包括每个团队或个人要执行的具体任务&#xff0c;每个任务最后期限和任何事情之 间的依赖关系。 该场景对应的关键词库:(24 个) 项目管理、项目协作计划、跨…

数学实验第三版(主编:李继成 赵小艳)课后练习答案(十)(2)(3)

实验十&#xff1a;非线性函数极值求解 练习二 1.求解极值问题: (1) s.t. function [c,ceq]fun(x) c(1)-(25-x(1)^2-x(2)^2); c(2)-(7-x(1)^2x(2)^2); ceq0;换一个窗口运行下面的程序&#xff1a; clc;clear; f(x)-2*x(1)-x(2); a[]; b[]; aeq[];beq[]; u[5;10]; l[0;0];…

AI换脸离线本地版-讲解2

嘿&#xff0c;准备好了吗&#xff1f;我来给你幽默地讲解下AI换脸&#xff01; 所谓AI换脸&#xff0c;就是让你变成“百变小萝莉”或者“花心大少爷”一样&#xff0c;只需一键操作&#xff0c;就能把你的脸魔法般地贴到别人脸上&#xff0c;就像是面部贴纸一样。你可以秒变…

智慧园区的可视化大屏,比你见过的更漂亮。

智慧园区云平台的建设旨在建立统一的工作流程&#xff0c;协同、调度和共享机制&#xff0c;以云平台为枢纽&#xff0c;形成一个紧密联系的整体&#xff0c;获得高效、协同、互动、整体的效益。

Windows 安装和连接使用 PgSql数据库

一. PostgreSQL 安装详细步骤 下载地址&#xff1a;https://www.enterprisedb.com/postgresql-tutorial-resources-training-1?uuidd732dc13-c15a-484b-b783-307823940a11&campaignIdProduct_Trial_PostgreSQL_16 1. 双击打开安装包 2. 选择安装目录 3. 选择安装组件 4.…

ARM:AI 的翅膀,还能飞多久?

ARM&#xff08;ARM.O&#xff09;于北京时间 2024 年 2 月 8 日上午的美股盘后发布了 2024 年第三财年报告&#xff08;截止 2023 年 12 月&#xff09;&#xff0c;要点如下&#xff1a; 1、整体业绩&#xff1a;收入再创新高。ARM 在 2024 财年第三季度&#xff08;即 23Q4…

Android 13.0 SystemUI下拉状态栏定制二 锁屏页面横竖屏解锁图标置顶显示功能实现

1.前言 在13.0的系统rom定制化开发中,在关于systemui的锁屏页面功能定制中,由于在平板横屏锁屏功能中,时钟显示的很大,并且是在左旁边居中显示的, 由于需要和竖屏显示一样,所以就需要用到小时钟显示,然后同样需要居中,所以就来分析下相关的源码,来实现具体的功能 如图…

蓝桥杯2023年真题(3)

1.冶炼金属&#xff08;二分、数学&#xff09; //二分 #include <iostream> using namespace std;int get1(int a, int b){int l 0, r 1e9;while(l 1 < r){int mid (l r) / 2;if(a / mid < b) r mid;else l mid;}return r; }int get2(int a, int b){int l …

FL Studio 21.2.3.4004 All Plugins Edition Win/Mac音乐软件

FL Studio 21.2.3.4004 All Plugins Edition 是一款功能强大的音乐制作软件&#xff0c;提供了丰富的音频处理工具和插件&#xff0c;适用于专业音乐制作人和爱好者。该软件具有直观的用户界面&#xff0c;支持多轨道录音、混音和编辑&#xff0c;以及各种音频效果和虚拟乐器。…