约瑟夫经典问题C++,STL容器queue解法

2024-02-22 21:52

本文主要是介绍约瑟夫经典问题C++,STL容器queue解法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:

        

Description

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

注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 n−1 名小朋友,而该题是全部出圈。

Input

输入两个整数 n,m

Output

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

Sample 1

Inputcopy

Outputcopy

10 3

3 6 9 2 7 1 8 5 10 4

Hint

≤1001≤m,n≤100

解题思路:

用STL容器的,queue队列来写:

        一个一个的报数,可以想象成一个队列,一个人报完数后,判断他所报的数是不是出局的数,如果是,直接弹出,但若不是,将其移动至队尾。我们使用一个队列之前,需要加上头文件<queue>

代码如下:

#include<bits/stdc++.h>
#include<queue>
using namespace std;
int main()
{int n, m, nowNum = 1;cin >> n >> m;queue<int> q;for(int i = 1; i < n; i++) q.push(i);	//初始化队列while(!q.empty())				//在队列不为空时继续{if(nowNum == m){cout << q.front << " ";	//打印出局的人的编号q.pop();				//出局nowNum = 1;			//初始化现在的数字}else{nowNum++;q.push(q.front());	//排至队尾q.pop();}}cout << endl;return 0;
}

这篇关于约瑟夫经典问题C++,STL容器queue解法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736615

相关文章

Flex2 z-order问题解决

在flex2中, 一个容器的子控件相互重叠(如Canvas), 由z-order决定. swapChildren, swapChildrenAt用来交换两个子控件的z-order, 但有时会抛如下异常: can1.swapChildrenAt(1, 0);RangeError: Error #2006: The supplied index is out of bounds. can1.swa

配置xml时一些jar和命名空间问题,如mvc:annotation-driven

暑假用springmvc搭了一些小demo,刚开始和以前搭建ssh一样,出现了一些jar未加载和xml文件的命名空间没引入的问题。想想每次都是出了问题去网上百度,有点烦,就记下来了。 Q1.元素 "mvc:annotation-driven" 的前缀 "mvc"未绑定 办法:这是我在spring-servlet.xml文件里使用<mvc>开头的标签时,忘记引入了命名空间。在xml的beans里

C++ 期末复习(几个知识点)

带默认参数的构造函数,默认参数必须置于参数列表结尾 例子:(int a,int b=0)正确(int a=0,int b)错误拷贝构造函数:~用它所在类的对象引用作为参数 CExample(const CExample & c){a=c.a;printf("copy constructor is called\n");} 静态数据成员赋初值 class BB{private:sta

Pyinstaller编译python项目为exe遇到的问题,flask服务无法启动

SocketIO(app)无法启动,提示ValueError: Invalid async_mode specified 需要安装以下包: gevent gevent-websocket 然后SocketIO不需要设置async_mode,并且使用pyinstaller的时候需要设置–hidden-import –hidden-import 是 PyInstaller 打包工具的一个命令行选

Feign +JPA 基于级联关系的调用问题

最近在项目中文章和用户的多对一关系,在页面(消费者)获取生产者数据时报了如下的一个错误: 根据错误提示:涉及到json数据和懒加载问题,通过添加如下配置问题解决: application.yml:添加: 实体类: 问题解决

Spring容器结构

文章目录 1.基本介绍1.Spring5官网2.API文档3.Spring核心学习内容4.几个重要概念 2.快速入门1.需求分析2.入门案例1.新建Java项目2.导入jar包3.编写Monster.java4.src下编写Spring配置文件1.创建spring配置文件,名字随意,但是需要放在src下2.创建Spring face3.创建Application Context4.编写内容

vue-selecttree rules规则失效问题

采用 <el-form-item style="margin-bottom: 0;" label="专题分类" prop="categoryId"><treeselectv-model="form.category.id":disabled="readonly||(form.enabled==1)":load-options="loadCats":props="defaultProps":op

std::optional:解决值存在性问题的利器

背景 查找std::vector内的首个偶数,如果存在则返回该偶数;可是如果std::vecotr内不存在偶数时,该如何?通常是找一些魔幻值/错误码作为返回值,如-1;如如下代码 //return first even value if exist, else return -1;int find_even(std::vector<int> nums){auto it = std::fin

docker 容器批量处理

停止所有容器 ,并删除所有容器 docker stop $(docker ps -q) & docker rm $(docker ps -aq) 容器相关文字简单查询 docker ps | grep app 查找指定容器名字的日志文件 docker logs docker ps -aq --filter name=app 根据容器名字删除指定容器 docker rm docker

[C++17]std::optional

1.std::optional是什么 C++17新特性。表示一个可能有值的对象,没有值时就是std::nullopt。 2.为什么引入std::optional 因为C++底层缺少None这个表示,所以将std::nullopt和某种特定类型的变量合并在一起构造成一个std::optional对象。 比如实现返回数组中第一个非0元素的函数,当数组中不存在非0元素时返回-1,但是其实我们不知