约瑟夫问题(vector的使用)
题目大意:有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+;
const int maxn=1e3+;
const int maxk=5e3+;
const int maxx=1e4+;
const ll maxe=+;
#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=;i<s;i++)//这里为何是从1开始呢? 因为本身已经算一个了
{
it++;
if(it==v1.end()) it=v1.begin();//注意当it到达末尾时,指向第一个元素
}
while(!v1.empty())
{
for(int i=;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=;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 ;
}
约瑟夫问题(vector的使用)的更多相关文章
- hdu 4841 圆桌问题(用vector模拟约瑟夫环)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4841 圆桌问题 Time Limit: 3000/1000 MS (Java/Others) M ...
- 练习C++的vector语法-约瑟夫问题
//测试vector,约瑟夫问题 #include <iostream> #include <vector> using namespace std; int main() { ...
- 【vector的输出问题】 洛谷 P1996 约瑟夫问题
题目:P1996 约瑟夫问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 可恶啊,本来是一道不算难的题,硬是因为cin,cout同步流卡了我一天qwq 关闭cin,cout同步流 ...
- tc 147 2 PeopleCircle(再见约瑟夫环)
SRM 147 2 600PeopleCircle Problem Statement There are numMales males and numFemales females arranged ...
- 约瑟夫环(Josehpuse)的模拟
约瑟夫环问题: 0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里剩下的最后一个数字. 这里给出以下几种解法, 1.用队列模拟 每次将前m-1个元 ...
- 简单约瑟夫环的循环单链表实现(C++)
刚刚接触C++以及数据结构,今天做了第一次尝试用C++和数据结构解决问题,问题是基于约瑟夫环问题的简单版. 先来看看约瑟夫环问题的介绍: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.. ...
- Roman Roulette(约瑟夫环模拟)
Roman Roulette Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- 约瑟夫问题 小孩报数问题poj3750
小孩报数问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15228 Accepted: 6778 Descripti ...
- 洛谷P1996 约瑟夫问题【链表】
题目:https://www.luogu.org/problemnew/show/P1996 题意: 约瑟夫环.每次取出第m个,第2m个...... 思路: 链表维护.[感觉很少有用到链表.]非常经典 ...
随机推荐
- poj 3469 Dual Core CPU——最小割
题目:http://poj.org/problem?id=3469 最小割裸题. 那个限制就是在 i.j 之间连双向边. 根据本题能引出网络流中二元关系的种种. 别忘了写 if ( x==n+1 ) ...
- 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner
目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...
- Linux根据端口查看进程
若不知道具体目录,可以根据端口查找,查看端口22000的信息: sudo lsof -i:22000 RelaySvr 4322 root 13u IPv4 75680495 0t0 ...
- HTML表格中<td scope="col">与<td scope="row">的含义
HTML表格中<td scope="col">与<td scope="row">的含义 表格中 <td scope="c ...
- IOS+openCV在Xcode的入门开发
昨天折腾了一天,终于搞定了openCV+IOS在Xcode下的环境并且实现一个基于霍夫算法的圆形识别程序.废话不多说,下面就是具体的折腾流程: ---------------------------- ...
- vue.js解决刷新404找不到页面问题
1.将包解压到ROOT目录后创建WEB-INF目录 mkdir WEB-INF 2.进入WEB-INF目录,创建web.xml文件 cd WEB-INF touch web.xml 3.编辑web.x ...
- java电子书chm全套下载
链接:http://pan.baidu.com/s/1qWmMlYk 密码:us3x 版权声明:本文为博主原创文章,未经博主允许不得转载.
- [51nod1247]可能的路径(思维题)
题意:给定(a,b),(x,y) ,(a,b)可以通向(a-b,b) (a+b,b) (a,a+b) (a,a-b) 求能否到达(x,y) 解题关键:类似于更相减损,变换过程中gcd是一样的. #i ...
- pip 在windows下如何升级
建议:由于是pip的国外的,在更新之前先开启vpn,这样更新会顺畅些. 官方网页要求在 cmd中输入以下命令进行 pip的 更新: python -m pip install -U pip 更新成功后 ...
- 《精通Spring4.X企业应用开发实战》读后感第五章(通过编码方式动态添加Bean)