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

约瑟夫问题

有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;

}

相关文章:

  • 企业级网络管理实战:Linux、云与容器的深度融合与优化
  • 关于无法下载Qt离线安装包的说明
  • 企业内训系统源码开发详解:直播+录播+考试的混合式学习平台搭建
  • Arduino 编码器
  • 2025-05-29 学习记录--Python-面向对象
  • 花哨桌面 V 3.0.0 (火影忍者版)
  • 每日刷题c++
  • 棋盘问题(放置棋子)
  • 【Phytium】飞腾FT2000/4 GPIO功能开发实例
  • Python实例题:Python实现Zip文件的暴力破解
  • 游戏盾在非游戏行业的应用实践与价值分析
  • leetcode:372. 超级次方(python3解法,数学相关算法题)
  • 【SQL】关键字
  • 在Spring Cloud中将Redis共用到Common模块
  • 健康管理系统的核心价值:降低成本,提升效率
  • leetcode701.二叉搜索树中的插入操作:迭代法利用有序性寻找空节点插入点
  • Java HashMap原理:高效键值存储的秘密
  • Spring AI(9)——MCP客户端
  • 4060显卡什么水平 4060显卡参数介绍
  • 【QT】理解QT机制之“元对象系统”
  • 装修平面图用什么软件简单/深圳网络推广seo软件
  • 各大网站地区是怎样和做的/拉新app推广接单平台
  • 怎样做网站全屏代码/网络营销策划书封面
  • 企业只有建立自己的网站平台/刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚
  • 做网站切图尺寸/百度提交链接
  • 澄迈网站建设/优秀企业网站模板