【数据结构入门训练DAY-21】信息学奥赛一本通T1334-围圈报数

文章目录

前言

本次训练内容

  1. STL库中队列的使用练习。
  2. 训练解题思维

一、题目

有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,...,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,...,n,打印出列的顺序。

输入格式

n和m。其中n<=100

输出格式

出列的顺序。

样例输入

复制代码
4 17

样例输出

复制代码
1 3 4 2

二、解题思路

这道题目是一道普通的出入队列操作的题目。我是使用计数器的模式控制它是否出队列;使用if-else判断,当它符合时,直接弹出队列的头;否则就是不断刷新队列,先队列依次出去,然后紧接着马上入队。实现代码如下:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

int main() {
    int n,m;
    int sum=0;
    cin>>n>>m;
    queue<int> q;
    for (int i=1;i<=n;i++) {//首次入队
        q.push(i);
    }
    while (!q.empty()) {
        sum++;
        if (sum%m==0) {//用计数器判断是否输出
            cout<<q.front()<<" ";;
            q.pop();
        }
        else {//循环队列,直到所有的元素被输出。
            int temp=q.front();
            q.pop();
            q.push(temp);
        }
    }

}

要注意首次入队需要从1开始。

总结

今天的题目没有太多难点;只需要理清楚思路,就可以很快的做出来,然后就是代码逻辑问题,今天的输出部分花了点时间思考,这个问题下次应该避免发生。今天的内容没有什么特别的事情发生。今天的内容就到这里吧,因为今天的题目相对普通,没有什么特别的地方了。

相关推荐
汉克老师5 小时前
第十四届蓝桥杯青少组C++选拔赛[2023.2.12]第二部分编程题(5、机甲战士)
c++·算法·蓝桥杯·01背包·蓝桥杯c++·c++蓝桥杯
Mr_Xuhhh6 小时前
项目需求分析(2)
c++·算法·leetcode·log4j
c++bug7 小时前
六级第一关——下楼梯
算法
Morri37 小时前
[Java恶补day53] 45. 跳跃游戏Ⅱ
java·算法·leetcode
林木辛7 小时前
LeetCode热题 15.三数之和(双指针)
算法·leetcode·双指针
AndrewHZ7 小时前
【3D算法技术】blender中,在曲面上如何进行贴图?
算法·3d·blender·贴图·三维建模·三维重建·pcg
Jared_devin7 小时前
二叉树算法题—— [蓝桥杯 2019 省 AB] 完全二叉树的权值
数据结构·c++·算法·职场和发展·蓝桥杯
AI 嗯啦9 小时前
数据结构深度解析:二叉树的基本原理
数据结构·算法
和光同尘@9 小时前
66. 加一 (编程基础0到1)(Leetcode)
数据结构·人工智能·算法·leetcode·职场和发展
CHEN5_029 小时前
leetcode-hot100 11.盛水最多容器
java·算法·leetcode