题目大意:有n个人围坐在圆桌周围,每个人都有一个固定的编号。 从第s(<=n)个人开始报数(按照顺时针方向,从1开始),报到m的人出列,接着再从出列着的

下一个人开始报数(依然从1开始),报到m的人又出列······重复进行,直到所有人都出列。给定任意的n,s.m和刚开始n个人的编号,求他们出列的顺序

看代码

#include<iostream>
#include<string.h>
#include<map>
#include<cstdio>
#include<cstring>
#include<stdio.h>
#include<cmath>
#include<ctype.h>
#include<math.h>
#include<algorithm>
#include<set>
#include<queue>
typedef long long ll;
using namespace std;
const ll mod=1e9+7;
const int maxn=1e3+10;
const int maxk=5e3+10;
const int maxx=1e4+10;
const ll maxe=1000+10;
#define INF 0x3f3f3f3f3f3f
#define Lson l,mid,rt<<1
#define Rson mid+1,r,rt<<1|1
vector<int>v1,v2;//v1代表初始状态,v2存答案
int n,a,s,m;
void solve()
{vector<int>::iterator it=v1.begin();for(int i=1;i<s;i++)//这里为何是从1开始呢?  因为本身已经算一个了
    {it++;if(it==v1.end()) it=v1.begin();//注意当it到达末尾时,指向第一个元素
    }while(!v1.empty()){for(int i=1;i<m;i++){it++;if(it==v1.end()) it=v1.begin();}v2.push_back(*it);v1.erase(it);//删除它并且指向它的下一个元素if(it==v1.end()) it=v1.begin();//当删除的是最后一个元素时,指向第一个元素
    }
}
int main()
{cin>>n>>s>>m;for(int i=0;i<n;i++){cin>>a;v1.push_back(a);//
    }solve();vector<int>::iterator it1;it1=v2.begin();for(it1;it1!=v2.end();it1++) cout<<*it1<<" ";cout<<endl;return 0;
}

转载于:https://www.cnblogs.com/caijiaming/p/9459548.html

约瑟夫问题(vector的使用)相关推荐

  1. 约瑟夫环问题(vector模拟过程)

    1862: zbj的狼人杀 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Description 这天zbj和小 ...

  2. C++约瑟夫问题求解

    约瑟夫问题:n个骑士编号1,2,-,n,围坐在圆桌旁.编号为1的骑士从1开始报数,报到m的骑士出列,然后下一个位置再从1开始报数,找出最后留在圆桌旁的骑士编号. (1)编写一个函数模板.以一种顺序容器 ...

  3. 简单约瑟夫环问题解法汇总(模拟/数论)

    1.求解最后一个 N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数.问最后剩下的人的编号. 例如:N = 3,K = 2.2号先出列,然后是1号,最 ...

  4. 【51nod - 1875】 丢手绢(约瑟夫问题,可打表,用STL模拟)

    题干: 六一儿童节到了,小朋友们在玩丢手绢的游戏.总共有C个小朋友,编号从1到C,他们站成一个圈,第i(1<i<=C)个人的左边是i-1,第1个人的左边是C.第i(1<=i<C ...

  5. 剑指Offer - 面试题62. 圆圈中最后剩下的数字(约瑟夫环 递推公式)

    1. 题目 0,1,-,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次 ...

  6. STL(二)——向量vector

    一.vector容器 ① 动态数组,从末尾能快速插入与删除,直接访问任何元素. ② 一个摸板类,能存放任何类型的对象. ③ Vector作为函数的参数或者返回值时,需要注意它的写法: double D ...

  7. 约瑟夫问题(猴子选大王)

    n只猴子要选大王,选举方法如下:所 有猴子按 1,2 --- n 编号并按照顺序围成一圈, 从第 k 个猴子起,由1开始报数,报到m时,该猴子就跳出圈外, 下一只猴子再次由1开始报数, 如此循环,直到 ...

  8. HDU4841 圆桌问题【约瑟夫环+模拟+STL】

    圆桌问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submissi ...

  9. 程序员面试金典——番外篇之约瑟夫问题2

    程序员面试金典--番外篇之约瑟夫问题2 参考网址:https://www.nowcoder.com/profile/9270572/codeBookDetail?submissionId=157791 ...

最新文章

  1. Mapreduce基本工作流程
  2. ajax,php文件读取
  3. struts2加入自定义的actionValidatorManager实现类
  4. 几种设计良好结构以提高.NET性能的方法
  5. 【C语言进阶深度学习记录】二十五 指针与数组的本质分析二
  6. vs2012 entity framework mysql_MVC4,MVC3,VS2012+ entity framework Migration from Sqlserver
  7. Chrome developer tool介绍(javascript调试)
  8. list中去除连续重复的值并保留头尾2个和头尾2个值在原list中的索引
  9. SpringBoot + Redis + Shiro 实现权限管理
  10. ASP.NET MVC5+EF6+EasyUI 后台管理系统(45)-工作流设计-设计步骤
  11. 规则绝对公平时,社会财富的流向谁?
  12. android 转场动画 共享元素,Android-Animation-Set
  13. 【MTK驱动模块_4】battery--硬件原理介绍
  14. 基因表达谱热图的绘制
  15. CPU组合逻辑控制方式
  16. 深入理解光电二极管恒流特性与电压电流检测电路原理
  17. LeetCode 111-120题 尚未看题解
  18. c语言调用tuxedo步骤,c语言入门之BCB客户端tuxedo开发实例
  19. 杨辉三角~~~~~~~~
  20. Codeforces Round #663 (Div. 2) A-D

热门文章

  1. mysql collate
  2. java.net.SocketException: Write failed: Broken pipe异常分析
  3. WSDM2021 | 多交互注意力网络用于CTR预估中细粒度特征学习
  4. 绝对不能错过!计算机视觉入门必备
  5. 全球首发!惯性导航导论(剑桥大学)第八部分
  6. leetcode力扣105. 从前序与中序遍历序列构造二叉树
  7. 【问答集锦】联邦学习让隐私保护和海量数据学习兼得!
  8. java用for打印正方形_java.java
  9. matplotlib数据可视化实战——折线图+散点图
  10. Java自动化测试框架-05 - 来给你的测试报告化个妆整个形 - (上)(详细教程)