当前位置: 首页 > ds >正文

约瑟夫问题

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

用队列来模拟报数。方法是反复排队,从队头出去,然后重新排到队尾,每一轮数到 m 的人离开队列。

#include <bits/stdc++.h>

using namespace std;

const int N = 10005;

struct myqueue{

    int a[N];

    int head;

    int tail;

    void init(){head = 0, tail = -1;}

    int size(){return tail - head + 1;}

    void push(int data){a[++tail] = data;}

    int front(){return a[head];}

    void pop(){head++;}

};

myqueue que;

int main(){

    int n,m;

    cin>>n>>m;

    que.init();

    for(int i = 1;i <= n;i++) que.push(i);

    while(que.size() != 0){

        for(int i = 1;i < m;i++){

            que.push(que.front());

            que.pop();

        }

        cout << que.front() << " ";

        que.pop();

    }

    cout << endl;

    return 0;

}

http://www.xdnf.cn/news/9973.html

相关文章:

  • insightface==0.7.3 编译失败
  • 从时钟精度看晶振频率稳定度的重要性
  • 12-后端Web实战(登录认证)
  • 实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.4 R语言解题
  • Linux文件操作、文件夹操作
  • 【前端】使用grid布局封装断点式进度条
  • Flannel 支持的后端
  • 交集、差集、反选
  • 蓝牙和wifi相关的杂项内容总结
  • Executors面试题
  • apptrace 的优势以及对 App 的价值
  • 【Stable Diffusion 1.5 】在 Unet 中每个 Cross Attention 块中的张量变化过程
  • 磁盘管理无法删除卷,虚拟磁盘管理器:不支持该请求
  • Attention Is All You Need论文阅读笔记
  • Wirtinger Flow算法的matlab实现和python实现
  • 【前端】Twemoji(Twitter Emoji)
  • RV1126-OPENCV Mat理解
  • 某东 h5st第8个参数 指纹加密纯算解析
  • 模型微调之对齐微调KTO
  • MySQL的binlog有有几种录入格式分别有什么区别 ?
  • VSCode的下载与安装(2025亲测有效)
  • LLaMaFactory 微调QwenCoder模型
  • Windows 中禁止在桌面放置文件以保持桌面整洁
  • 深入详解编译与链接:翻译环境和运行环境,翻译环境:预编译+编译+汇编+链接,运行环境
  • does not provide an export named ‘getActiveHead‘
  • 集成均衡功能电池保护芯片在大功率移动电源的应用,创芯微CM1341-DAT、杰华特JW3312、赛微微电CW1244、中颖SH366006
  • 从Homebrew找到openssl.cnf文件并拷贝到Go项目下使用
  • vr中风--数据处理模型搭建与训练
  • NW907NW918美光固态闪存NW920NW930
  • mongodb删除字段