news 2026/9/4 3:55:29

csp信奥赛C++标准模板库STL案例应用14

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
csp信奥赛C++标准模板库STL案例应用14

csp信奥赛C++标准模板库STL案例应用14

queue实践

题目描述

n nn个人围成一圈,从第一个人开始报数,数到m mm的人出列,再由下一个人重新从1 11开始报数,数到m mm的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

输入格式

输入两个整数n , m n,mn,m

输出格式

输出一行n nn个整数,按顺序输出每个出圈人的编号。

输入输出样例 1
输入 1
10 3
输出 1
3 6 9 2 7 1 8 5 10 4
说明/提示

1 ≤ m , n ≤ 100 1 \le m, n \le 1001m,n100

思路分析

这是一个经典的约瑟夫环问题。代码使用队列这种数据结构来模拟整个过程:

  1. 初始状态:n个人围成一圈,编号1~n
  2. 报数规则:从第一个人开始报数,数到m的人出圈
  3. 循环过程:出圈后,从下一个人继续从1开始报数
  4. 结束条件:所有人都出圈

代码实现

#include<bits/stdc++.h>usingnamespacestd;intn,m;// 总人数n,报数上限mqueue<int>q;// 使用队列模拟约瑟夫环intmain(){// 输入数据cin>>n>>m;// 初始化队列:将1~n的编号顺序入队// 此时队列中的顺序就是初始的环状顺序for(inti=1;i<=n;i++){q.push(i);}// 模拟出圈过程while(!q.empty()){// 关键步骤:将前m-1个人从队首移到队尾// 这模拟了"报数"过程:这些人报数不是m,所以不出圈for(inti=1;i<=m-1;i++){q.push(q.front());// 队首元素加入队尾(相当于回到圈中继续报数)q.pop();// 移除原队首元素}// 当前队首即为报数到m的人// 因为前m-1个人已经移到队尾,现在队首是第m个人cout<<q.front()<<" ";// 输出出圈编号q.pop();// 移除已出圈的人(此人离开队列)}return0;}

功能分析

1. 核心数据结构:队列
  • 队列的特性:先进先出(FIFO)
  • 模拟环状结构:通过出队再入队的方式,模拟了人围成一圈的效果
  • 队首代表当前报数的人:始终从队首开始报数
2. 算法流程
初始化:1 2 3 ... n 入队 循环直到队列为空: 1. 将前m-1个人移到队尾(报数过程) 2. 队首的人出队并输出(出圈)
3. 示例演示(n=5, m=3)
初始队列:[1,2,3,4,5] 第1轮:1,2移到队尾 → [3,4,5,1,2] → 3出圈 第2轮:4,5移到队尾 → [1,2,4,5] → 1出圈 第3轮:2,4移到队尾 → [5,2,4] → 5出圈 第4轮:2,4移到队尾 → [2,4] → 2出圈 第5轮:4出圈 输出:3 1 5 2 4
4. 算法特点
  • 时间复杂度:O(n×m),因为每个人出圈需要移动m-1次
  • 空间复杂度:O(n),队列存储n个元素
  • 优点:直观易懂,代码简洁
  • 适用性:适用于n和m较小的情况(本题限制为≤100)

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}
  • 一、CSP信奥赛C++通关学习视频课:
    • C++语法基础
    • C++语法进阶
    • C++算法
    • C++数据结构
    • CSP信奥赛数学
    • CSP信奥赛STL
  • 二、CSP信奥赛C++竞赛拿奖视频课:
    • 信奥赛csp-j初赛高频考点解析
    • CSP信奥赛C++复赛集训课(12大高频考点专题集训)
  • 三、考级、竞赛刷题题单及题解:
    • GESP C++考级真题题解
    • CSP信奥赛C++初赛及复赛高频考点真题解析
    • CSP信奥赛C++一等奖通关刷题题单及题解

详细内容:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转


2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

  • 2025 csp-j 复赛真题及答案解析(最新更新)
  • 2025 csp-x(山东) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(河南) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(辽宁) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(江西) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(广西) 复赛真题及答案解析(最新更新)
  • 2020 ~ 2024 csp 复赛真题题单及题解
  • 2019 ~ 2022 csp-j 初赛高频考点真题分类解析
  • 2021 ~ 2024 csp-s 初赛高频考点解析
  • 2023 ~ 2024 csp-x (山东)初赛真题及答案解析
  • 2024 csp-j 初赛真题及答案解析
  • 2025 csp-j 初赛真题及答案解析(最新更新)
  • 2025 csp-s 初赛真题及答案解析(最新更新)
  • 2025 csp-x (山东)初赛真题及答案解析(最新更新)
  • 2025 csp-x (江西)初赛真题及答案解析(最新更新)
  • 2025 csp-x (辽宁)初赛真题及答案解析(最新更新)

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

  • 129 道刷题练习和详细题解,涉及:模拟算法、数学思维、二分算法、 前缀和、差分、深搜、广搜、DP专题、 树和图

4、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 5:09:36

10分钟精通BG3SE:博德之门3模组开发终极指南

10分钟精通BG3SE&#xff1a;博德之门3模组开发终极指南 【免费下载链接】bg3se Baldurs Gate 3 Script Extender 项目地址: https://gitcode.com/gh_mirrors/bg/bg3se 想要彻底改变你的博德之门3游戏体验吗&#xff1f;BG3SE脚本扩展器正是你需要的强大工具。这款开源扩…

作者头像 李华
网站建设 2026/9/3 0:03:22

网易云音乐无损解析工具:5步轻松获取高品质音乐资源

想要免费获取网易云音乐的无损音质资源吗&#xff1f;这个功能强大的网易云音乐无损解析工具为你提供了完美的解决方案。通过简单易用的Web界面和智能API接口&#xff0c;你可以轻松实现音乐搜索、单曲解析、歌单批量处理以及高品质音乐下载。 【免费下载链接】Netease_url 网易…

作者头像 李华
网站建设 2026/9/3 1:07:38

终极跨平台转换神器:Chunker完整使用教程 [特殊字符]

你是否曾为Minecraft不同版本间的存档无法互通而烦恼&#xff1f;想要在PC和手机之间无缝切换游戏体验&#xff1f;Chunker作为一款专业的跨平台存档转换工具&#xff0c;能够帮你轻松实现Java版与基岩版世界之间的双向转换。这款开源软件支持从经典版本到最新版本的全系列覆盖…

作者头像 李华
网站建设 2026/9/4 1:39:26

26、.NET Framework 功能概述

.NET Framework 功能概述 1. 数值解析 当输入字符串可能包含无效字符,导致 Parse 方法无法将其转换为适当类型并抛出异常时,建议使用 TryParse 方法。 TryParse 方法不会抛出异常,而是返回一个布尔值,指示转换是否成功,并通过 out 参数返回转换结果。 以下是一…

作者头像 李华
网站建设 2026/9/3 1:50:38

28、DiskDiff 应用的高级优化与功能实现

DiskDiff 应用的高级优化与功能实现 1. 线程操作优化 1.1 多线程扫描 为了让应用程序正常运行,扫描操作需要在不同的线程上进行,这样用户界面线程才能继续运行。可以使用 System.Threading 命名空间中的 Thread 对象来实现。以下是启动线程的代码: public void Pop…

作者头像 李华
网站建设 2026/9/3 0:01:39

BiliTools AI视频摘要技术实战:从智能解析到高效内容管理

BiliTools AI视频摘要技术实战&#xff1a;从智能解析到高效内容管理 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Trending/bilit/B…

作者头像 李华