案例练习:演讲比赛
演讲比赛:
比赛规则: 某市举行一场演讲比赛( speech_contest ),共有 24 个人参加。比赛共三轮,前两轮为淘汰赛,第三轮为决赛。
比赛方式:分组比赛,每组 6 个人;选手每次要随机分组,进行比赛; 第一轮分为 4 个小组,每组 6 个人。比如编号为: 100-123. 整体进行抽签 (draw)后顺序演讲。当小组演讲完后,淘汰组内排名最后的三个选手,然后继 续下一个小组的比赛。 第二轮分为 2 个小组,每组 6 人。比赛完毕,淘汰组内排名最后的三个选手,然 后继续下一个小组的比赛。 第三轮只剩下 1 组 6 个人,本轮为决赛,选出前三名。
比赛评分:10 个评委 打分,去除最低、最高分,求平均分每个选手演讲完由 10 个评委分别打分。该选 手的最终得分是去掉一个最高分和一个最低分,求得剩下的 8 个成绩的平均分。 选手的名次按得分降序排列。 用 STL 编程,求解这个问题
1) 请打印出所有选手的名字与参赛号,并以参赛号的升序排列。
2) 打印每一轮比赛后,小组比赛成绩和小组晋级名单 需求分析:
产生选手 ( ABCDEFGHIJKLMNOPQRSTUVWX) 姓名、得分; 选手编号 第 1 轮 选手抽签 选手比赛 查看比赛结果 第 2 轮 选手抽签 选手比赛 查看比赛结果 第 3 轮 选手抽签 选手比赛 查看比赛结果 实现思路: 需要把选手信息、选手得分信息、选手比赛抽签信息、选手的晋级信 息保存在容器中,需要涉及到各个容器的选型。 选手可以设计一个类 Speaker (姓名和得分) 所有选手的编号可以单独放在一个 vector 容器中,做抽签用 所有选手编号和选手信息,可以放在容器内:map 所有选手的编号名单,可以放在容器:vecter v1 中 第 1 轮晋级编号名单,可以放在容器 vecter v2 中 第 2 轮晋级编号名单,可以放在容器 vecter v3 中 第 3 轮前三名名单,可以放在容器 vecter v4 中 每个小组的比赛得分信息,按照从大到小的顺序放在 multimap中 每 个选手的得分,可以放在容器 deque dscore; 方便去除最低最高分.
https://ewm.proedu.com.cn/previewIndex/1091696
#include <algorithm>
#include <array>
#include <ctime>
#include <deque>
#include <functional>
#include <iostream>
#include <map>
#include <numeric>
#include <string>
#include <vector>
using namespace std;class Player {public:// 创建选手列表void creatPlayer(map<int, Player>& playerList, vector<int>& playerId);// 抽签void select(vector<int>& playerId);// 比赛void sartMatch(int round,vector<int>& playerId,map<int, Player>& playerList,vector<int>& mLevelList);// 显示选择比赛信息void showInfor(int round,vector<int>& vLevelList,map<int, Player>& mPlayersList);private:string mName;array<int, 3> mScore; // 3场比赛的分数
};// 创建选手列表
void Player::creatPlayer(map<int, Player>& playerList, vector<int>& playerId) {string nameSeed = "ABCDEFGHIJKLMNOPQRSTUVWX"; // 选手名字random_shuffle(nameSeed.begin(), nameSeed.end()); // 打乱顺序for (int i = 0; i < 24; i++) {Player p;p.mName = nameSeed[i];int joinId = 100 + i;playerList.insert(make_pair(joinId, p)); // 将选手信息加入playerId.push_back(joinId);}
}// 抽签
void Player::select(vector<int>& playerId) {srand((unsigned int)time(NULL));random_shuffle(playerId.begin(), playerId.end()); // 打乱选手Id
}// 比赛
void Player::sartMatch(int round,vector<int>& playerId,map<int, Player>& playerList,vector<int>& mLevelList) {srand((unsigned int)time(NULL));// 保存分组信息, multimap<分数,编号> 默认升序;此处使用greater进行降序multimap<int, int, greater<int>> mGroups;for (vector<int>::iterator it = playerId.begin(); it != playerId.end();++it) {deque<int> dScores; // 分数容器for (int i = 0; i < 10; i++) {int score = rand() % 50 + 50;dScores.push_back(score);}// 排序后删除最大最小,求平均值sort(dScores.begin(), dScores.end(), greater<int>());dScores.pop_back();dScores.pop_front();int avg =accumulate(dScores.begin(), dScores.end(), 0) / dScores.size();playerList[*it].mScore[round - 1] = avg;mGroups.insert(make_pair(avg, *it));if (mGroups.size() == 6) {multimap<int, int>::iterator mit = mGroups.begin();for (int j = 0; j < 3; j++) { // 组内胜利的前3晋级mLevelList.push_back(mit->second);++mit;}mGroups.clear();}}
}// 显示选手信息
void Player::showInfor(int round,vector<int>& vLevelList,map<int, Player>& mPlayersList) {cout << "第" << round << "轮比赛晋级名单如下:" << endl;for (auto id : vLevelList) {cout << "Score " << mPlayersList[id].mScore[round - 1]<< " Name:" << mPlayersList[id].mName << endl;}cout << "----------------------------\n";
}int main(int argc, char** argv) {Player player;map<int, Player> mPlayersList;vector<int> playerId;player.creatPlayer(mPlayersList, playerId);vector<int> vLevelList1; // 第1场比赛的选手晋级名单vector<int> vLevelList2; // 第2场比赛的选手晋级名单vector<int> vLevelList3; // 第3场比赛的选手晋级名单player.select(playerId); // 抽签player.sartMatch(1, playerId, mPlayersList, vLevelList1); // 参加比赛player.showInfor(1, vLevelList1, mPlayersList); // 晋级名单player.select(vLevelList1); // 抽签player.sartMatch(2, vLevelList1, mPlayersList, vLevelList2); // 参加比赛player.showInfor(2, vLevelList2, mPlayersList); // 晋级名单player.select(vLevelList2); // 抽签player.sartMatch(3, vLevelList2, mPlayersList, vLevelList3); // 参加比赛player.showInfor(3, vLevelList3, mPlayersList); // 晋级名单return 0;
}
相关文章:
案例练习:演讲比赛
演讲比赛: 比赛规则: 某市举行一场演讲比赛( speech_contest ),共有 24 个人参加。比赛共三轮,前两轮为淘汰赛,第三轮为决赛。 比赛方式:分组比赛,每组 6 个人;选手每次…...
推荐一个很好用的Latex写代码的软件
软件名称:Axmath 据说是国产软件,好用是真好用(去哪找?比如某地球号的公主号或其他地方)我是推荐付费购买使用 1.通过图形操作,选择要转成Latex代码的符号,按下转换,直接就出现了我…...
windows 程序右键管理员点击无响应
Windows 程序在右键单击以管理员身份运行时没有响应,可能是由于多种原因引起的。下面是一些常见的问题和解决方案: 1. 用户账户控制 (UAC) 设置问题: - 试着降低或提高 UAC 设置,然后再试一次。可以在控制面板的“用户账户”部…...
开发基于Java语言的SaaS(Software-as-a-Service,软件即服务)模式的HIS系统详解 HIS系统源码 支持二开
开发基于Java语言的SaaS(Software-as-a-Service,软件即服务)模式的HIS系统详解 HIS系统源码 支持二开 开发基于Java语言的SaaS(Software-as-a-Service,软件即服务)模式的HIS(Hospital Informat…...
关于微信小程序(必看)
前言 为规范开发者的用户个人信息处理行为,保障用户的合法权益,自2023年9月15日起,对于涉及处理用户个人信息的小程序开发者,微信要求,仅当开发者主动向平台同步用户已阅读并同意了小程序的隐私保护指引等信息处理规则…...
Activity中Context
Activity中Context在activity.attach()设置,所以Application中Context为ContextImpl appContext createBaseContextForActivity(r);,即在ContextImpl.createActivityContext()设置DispalyId private ContextImpl createBaseContextForActivity(Activit…...
位图法-有效的数独
有效的数独,主要是判断每行每列每宫有无重复元素。 每行每列用二重循环,每宫比较复杂,需要考虑每一宫的坐标与二重循环ij对应关系 行i,每一宫3行,3列 x3*(i/3)j/3 y3*(i%3)j%3...
Zookeeper ZNode 数据结构原理
ZNode 学习指南 1. ZNode 基本概念 什么是 ZNode:ZNode 是 Zookeeper 中的数据节点。它类似于文件系统中的文件和目录,ZNode 既可以保存数据又可以作为其他 ZNode 的父节点。ZNode 的路径:每个 ZNode 在 Zookeeper 命名空间中都有一个唯一的路径,如 /app1/config。2. ZNod…...
Golang - 90天从新手到大师
开篇 最近有很多小伙伴都在寻找go语言完整学习资料,我整理了一些Golang方面的知识,方便大家学习。内容从最基础的入门到项目设计,希望帮助更多想了解和学习Go语言的伙伴。 因为是持续创作,所以也会持续更新。有些章节目录还没有…...
MyBatis常用转义字符 大于、小于、大于等于、小于等
在Mybatis编写特殊常用字符你会发现会报错,比如常用的<,>,<,> 等,原因是与xml文件的元素<>冲突,所以需要转义。整理转义字符如下: 符号原始字符转义字符大于>>大于等于>>小于<<小于等于<<和&…...
Python --- 如何修改Jupyter Notebook在本地保存文件的默认路径?
如何修改Jupyter Notebook在本地保存文件的默认路径? 一直以来都比较喜欢jupter notebook,自从用了以后就爱上了。平时用的时候,因为大多都是临时调用,每次在界面里直接new一个新的file就开干。 曾经也想过我创建的这些python文件…...
大模型 舆情分析 数据构造 prompt提示词 经验分享 数据准备
最近在做舆情分析,需要执行比较复杂的任务流程(例如同时执行人名识别、相关机构识别、90分类),传统Bert无法胜任,因此尝试使用大模型进行处理。 下面的一些提示词是我用来准备数据的,这些数据可以按照不同…...
这些已经死去的软件,依旧无可替代
互联网这条长河里,软件们就像流星一样,一闪而过。有的软件火过一段时间,然后就慢慢消失了。 说不定有些软件你以前天天用,但不知道从什么时候开始就不再用了。时间一天天过去,我们的热情、记忆都在消退,还…...
SYD88xx使代码在RAM内存中执行/运行
SYD88xx使代码在RAM中执行 SYD8811/8810默认都是cache模式的,但是在代码首次运行的时候,需要将代码从flash搬到cache中执行,这样第一次的代码执行可能会比较慢,这里提供一个将需要提速的代码放到RAM中执行的方法。 对于SYD8811…...
基于支持向量机的垃圾邮件分类,使用SVM+flask+vue
sms-classify 基于支持向量机的垃圾邮件分类,使用SVMflaskvue 数据集和源码地址 数据集 SMS Spam Collection Data Set 来源于 UCI。样例被分为非垃圾邮件(86.6%)和垃圾邮件(13.4%),数据格式如下ÿ…...
目标检测数据集 - 零售食品LOGO检测数据集下载「包含VOC、COCO、YOLO三种格式」
数据集介绍:零售食品 LOGO 检测数据集,真实零售食品 LOGO 高质量商品图片数据,数据集含常见零售食品 LOGO 图片,包括饮料类、酒类、调味品类、膨化饼干类、巧克力类、常见零食类等等。数据集类别丰富,标注标签包含 150…...
47.PyCharm P版突然无法启动
目录 1.启动cmd.exe,进到pycharm\bin目录,启动.\pycharm.bat,如果正常,就像下面这个样子,如果不正常,则会报错, 2.用记事本打开pycharm.bat文件,加上以下代码后 今晨,无…...
「动态规划」如何求粉刷房子的最少花费?
LCR 091. 粉刷房子https://leetcode.cn/problems/JEj789/description/ 假如有一排房子,共n个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。当然,因为市…...
代码随想录算法训练营DAY41|背包问题 二维 、背包问题 一维、416. 分割等和子集
背包问题 二维 题目链接:背包问题 二维 def bag_weight_problem(n,space,weight,value):dp [[0 for i in range(space1)]for j in range(n)]for i in range(weight[0], space1):dp[0][i]value[0]for j in range(1, n):for k in range(space1):if weight[j]>k:…...
gitlab2024最新版安装
系统:redhat9.0 gitlab版本:gitlab-ce-16.10.7-ce.0.el9.x86_64.rpm 安装组件&包依赖:https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/9/gitlab-ce-16.10.7-ce.0.el9.x86_64.rpm 参考: 前提: 下载gitl…...
Boss-Key终极指南:Windows一键隐藏窗口的完整解决方案
Boss-Key终极指南:Windows一键隐藏窗口的完整解决方案 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 你是否曾在办公室突然需…...
Timer 时序大模型云服务来了!TimechoAI 开放邀请体验
本文约4000字,建议阅读5分钟 基于时序大模型 Timer,面向时序预测与智能分析的 TimechoAI 时序大模型云服务期待您参与内测!企业今天并不缺时序数据。真正稀缺的,是如何把这些持续积累的历史数据更低门槛地利用起来,为业…...
如何快速部署开源捉妖雷达Web版:面向新手的完整实时妖怪追踪指南
如何快速部署开源捉妖雷达Web版:面向新手的完整实时妖怪追踪指南 【免费下载链接】zhuoyao_radar 捉妖雷达 web版 项目地址: https://gitcode.com/gh_mirrors/zh/zhuoyao_radar 捉妖雷达Web版是一款基于现代Web技术开发的实时妖怪追踪工具,专为捉…...
NotebookLM生物学研究辅助落地手册(实验室已验证的7个不可公开的Prompt工程模板)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM生物学研究辅助落地手册(实验室已验证的7个不可公开的Prompt工程模板) NotebookLM 作为 Google 推出的文档感知型 AI 助手,在分子生物学、结构生物学与高通…...
Windows内核级硬件指纹伪装终极指南:EASY-HWID-SPOOFER深度解析
Windows内核级硬件指纹伪装终极指南:EASY-HWID-SPOOFER深度解析 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 在数字隐私日益重要的今天,硬件指纹识别技术…...
电源管理芯片瞬态测试技术解析与优化方案
1. 电源管理芯片瞬态测试的重要性与挑战在当今移动通信和便携式电子设备中,处理器工作频率已进入GHz时代,这对电源管理系统提出了前所未有的严苛要求。作为电源管理系统的核心组件,低压差线性稳压器(LDO)和降压型开关稳压器(Buck Regulator)的…...
三维多孔介质催化反应Fluent仿真:从模型构建到关键参数调优的实战解析
1. 三维多孔介质催化反应仿真入门指南 第一次接触Fluent做多孔介质催化反应仿真时,我被复杂的参数设置搞得晕头转向。记得当时为了复现一篇文献结果,整整折腾了两周才摸清门道。这种仿真本质上是通过数值方法模拟流体在多孔催化剂内部的流动、传质和化学…...
别再死记硬背GPIO寄存器了!用STM32 HAL库和CubeMX快速实现LED流水灯与按键控制
解放双手:用STM32CubeMX和HAL库玩转GPIO控制 在嵌入式开发的世界里,GPIO控制就像学习编程时的"Hello World"一样基础而重要。但有多少开发者还在为记忆繁琐的寄存器配置而头疼?当项目周期压缩到以天为单位计算时,我们是…...
如何快速掌握AMD Ryzen硬件调试:SMUDebugTool性能优化完整指南
如何快速掌握AMD Ryzen硬件调试:SMUDebugTool性能优化完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: ht…...
基于MCP协议构建AI智能体记忆系统:mnemo-mcp实战指南
1. 项目概述:一个为AI记忆而生的开源工具最近在折腾AI应用开发,特别是围绕大语言模型(LLM)构建智能体(Agent)时,一个绕不开的痛点就是“记忆”。模型本身没有持久化记忆,每次对话都是…...
