排序问题学习c++ 跑步比赛

 问题是假定有25名短跑选手争夺前三名,赛场上有五条赛道,一次可以有五名选手同时比赛,比赛不计时,只看相应的名次,假如选手的发挥是稳定的,最少几次比赛才可以决出前三名。

#include <iostream> // 包含输入输出流头文件
#include <vector> // 包含vector容器头文件
#include <algorithm> // 包含算法头文件,用于排序

int main() {
    int totalRunners = 25; // 总选手数
    int lanes = 5; // 赛道数
    int topPositions = 3; // 需要决出的名次数

    int heats = (totalRunners + lanes - 1) / lanes; // 计算初赛需要的场次,向上取整
    
    std::vector<int> topRunners; // 存储最优秀的选手

    // 初赛
    for (int i = 0; i < heats; ++i) { // 遍历每一场初赛
        topRunners.push_back(i * lanes + 1); // 每场比赛的第一名晋级
    }

    int finalRounds = 1; // 至少需要一场决赛

    // 如果晋级选手数超过赛道数,需要加赛
    while (topRunners.size() > lanes) { // 当晋级选手数大于赛道数时循环
        int additionalHeats = (topRunners.size() + lanes - 1) / lanes; // 计算需要的加赛场次
        std::vector<int> newTopRunners; // 存储新的晋级选手
        
        for (int i = 0; i < additionalHeats; ++i) { // 遍历每一场加赛
            newTopRunners.push_back(topRunners[i * lanes]); // 每场加赛的第一名晋级
        }
        
        topRunners = newTopRunners; // 更新晋级选手列表
        finalRounds++; // 增加一轮比赛
    }

    // 输出结果
    std::cout << "最少需要 " << heats + finalRounds << " 场比赛才能决出前三名。" << std::endl;

    return 0; // 程序正常结束
}

这个程序的逻辑如下:

  1. 首先进行初赛,每个赛道的第一名晋级。
  2. 如果晋级的选手数量大于赛道数,就需要进行加赛。
  3. 在加赛中,我们同样只取每场比赛的第一名晋级。
  4. 重复这个过程,直到晋级的选手数量不超过赛道数。
  5. 最后一场比赛就可以决出前三名。

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

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

相关文章

制定班规要注意哪些事项

对于如何管理班级&#xff0c;制定班规是一项至关重要的任务。关系到班级的日常秩序&#xff0c;影响着学生的集体荣誉感。制定班规并非易事&#xff0c;需要深思熟虑和周全考虑。 班规的制定应以学生为中心。深入了解学生的需求和期望&#xff0c;以及他们在学习和生活中可能遇…

Docker基础知识的掌握,相关基本命令的用法

安装docker步骤&#xff1a;https://b11et3un53m.feishu.cn/wiki/Rfocw7ctXij2RBkShcucLZbrn2d 1.docker Docker 是一种容器化平台&#xff0c;用于帮助开发者打包、发布和管理应用程序及其依赖关系。通过 Docker&#xff0c;开发者可以将应用程序及其所有依赖项打包到一个称为…

亿发微商城:从社交流量到生意增量,拓客+变现双收益

亿发微商城提供私域经营必备的系统 、服务和技术支持等全套解决方案。省去开发成本&#xff0c;还原品牌调性&#xff0c;打通社交渠道&#xff0c;经营私域会员&#xff0c;带来传统电商和线下门店之外的生意增量。

43.SO_BACKLOG

属于ServerSocketChannel参数 SO_BACKLOG 设置的过小&#xff0c;高峰期有很多连接来了&#xff0c;就会被拒绝&#xff0c;报拒绝连接错误。 控制全连接队列的大小&#xff0c;可以容下适量连接。所以SO_BACKLOG设置的要大一些。 serverBootstrap.option(ChannelOption.SO_B…

面试-javaIO机制

1.BIO BIO&#xff1a;是传统的javaIO以及部分java.net下部分接口和类。例如&#xff0c;socket,http等&#xff0c;因为网络通信同样是IO行为。传统IO基于字节流和字符流进行操作。提供了我们最熟悉的IO功能&#xff0c;譬如基于字节流的InputStream 和OutputStream.基于字符流…

Vue--》从零开始打造交互体验一流的电商平台(四)完结篇

今天开始使用 vue3 + ts 搭建一个电商项目平台,因为文章会将项目的每处代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关注本专栏,学习更多…

Webpack: 底层配置逻辑

概述 Webpack 5 提供了非常强大、灵活的模块打包功能&#xff0c;配合其成熟生态下数量庞大的插件、Loader 资源&#xff0c;已经能够满足大多数前端项目的工程化需求&#xff0c;但代价则是日益复杂、晦涩的使用方法&#xff0c;开发者通常需要根据项目环境、资源类型、编译目…

在运行中遇到扫描包问题

问题描述&#xff1a;当我们看到这个上面一行代码时就代表我们有个包没有被当前的Spring容器给扫描到&#xff0c;关于这个问题我们有两个&#xff1a;第一把整个包导进来&#xff0c;第二用哪个导哪个

人脑网络的多层建模与分析

摘要 了解人类大脑的结构及其与功能的关系&#xff0c;对于各种应用至关重要&#xff0c;包括但不限于预防、处理和治疗脑部疾病(如阿尔茨海默病或帕金森病)&#xff0c;以及精神疾病(如精神分裂症)的新方法。结构和功能神经影像学方面的最新进展&#xff0c;以及计算机科学等…

Qt开发笔记:Qt3D三维开发笔记(一):Qt3D三维开发基础概念介绍

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/140059315 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、O…

AI绘画:P图如此丝滑,OpenAI上线ChatGPT图像编辑功能,DallE-3绘画如此简单

大家好我是极客菌&#xff0c;用ChatGPT的DallE-3进行AI绘画对很多人来说是一个门槛很低的选择&#xff0c;现在OpenAI又重磅上线了图像编辑器功能(DallE editor)&#xff0c;可以很方便的对图片的局部进行修改&#xff0c;而且支持中文&#xff0c;主打一个功能强大且好用&…

Django —— 用户名和密码配置

创建项目ProjectA&#xff1a; django-admin startproject ProjectA cd进入ProjectA文件夹运行项目&#xff1a; python manage.py runserver 0.0.0.0:8000 Starting development server at http://0.0.0.0:8000/Quit the server with CTRL-BREAK. 访问http://localhost:80…

SET加密:电子商务安全的基石

随着电子商务的飞速发展&#xff0c;如何确保在线交易的安全性和可信度已成为消费者、商家和金融机构共同关注的焦点。SET协议&#xff08;Secure Electronic Transaction&#xff09;作为一种安全电子交易的国际标准&#xff0c;凭借其卓越的安全性能和广泛的行业认可&#xf…

c语言中extern定义和引用其他文件的变量,(sublime text)单独一个文件编译不会成功

关键字extern的作用 这个很常见的都知道是定义一个外部变量或函数&#xff0c;但并不是简单的建立两个文件&#xff0c;然后在用extern 定义在另一个非最初定义变量的文件里 区分文件和编译运行的文件 例如&#xff0c;一个文件夹里有文件a.c和文件b.c,在sublime text中直接…

重庆高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

随着科技的飞速发展&#xff0c;智能制造已成为推动产业升级和经济社会发展的重要力量。在这一背景下&#xff0c;重庆高校大学智能制造实验室积极推进数字孪生可视化系统平台建设项目&#xff0c;旨在通过先进的数字化技术&#xff0c;实现实验室资源的优化配置和高效利用。 …

java虚拟机栈帧操作

虚拟机栈(Virtual Machine Stack)是虚拟机(如JVM、Python VM等)用来管理方法调用和执行的栈结构。它主要用于存储方法调用的相关信息,包括局部变量、操作数栈、动态链接和方法返回地址等。 java虚拟机栈操作的基本元素就是栈帧,栈帧主要包含了局部变量表、操作数栈、动态…

数字签名解析

1. 概述 数字签名不是手写签名的数字图像&#xff1b; 数字签名是一种可以提供认证的加密形式&#xff0c;是转向完全无纸环境的一个途径&#xff1b; 数字签名机制用以解决伪造、抵赖、冒充和篡改、完整性保护等安全问题。 2. 公钥密码与数字签名的关系 要实现数字签名&#…

【04】从0到1构建AI生成思维导图应用 -- 创建 AI 工作流

【04】从0到1构建AI生成思维导图应用 – 创建 AI 工作流 大家好&#xff01;最近自己做了一个完全免费的AI生成思维导图的网站&#xff0c;支持下载&#xff0c;编辑和对接微信公众号&#xff0c;可以在这里体验&#xff1a;https://lt2mind.zeabur.app/ 上一章&#xff1a;h…

mybatis核心配置介绍

mybatis核心配置 【mybatis全局配置介绍】 ​ mybatis-config.xml&#xff0c;是MyBatis的全局配置文件&#xff0c;包含全局配置信息&#xff0c;如数据库连接参数、插件等。整个框架中只需要一个即可。 1、mybatis全局配置文件是mybatis框架的核心配置&#xff0c;整个框架…

2024高考录取分数线一览表(含一本线、二本线、专科线)

2024年全国各地的高考录取分数线已经全部公布&#xff0c;查大学网&#xff08;www.chadaxue.com&#xff09;为大家整理全国31个省市高考录取分数线汇总&#xff0c;包括本科批&#xff08;一本分数线线和二本分数线&#xff09;、专科批和特殊类招生控制分数线汇总&#xff0…