vector实现约瑟夫

这段代码展示了如何使用C++中的vector容器模拟解决约瑟夫问题。程序首先读入参与者的数量n和每次淘汰的间隔m,然后将1到n的整数依次存入vector。接着,遍历并删除每隔m个位置的元素,直至最后只剩下一个元素,即为存活者。程序通过vector的erase函数动态移除元素,并输出了整个过程中被删除的数字。
摘要由CSDN通过智能技术生成

/*
1.  读入优化 的 初识、
约瑟夫实现  vector模拟实现
过程: 先将每个元素放入 容器中  push_back();    
       for遍历将 n-1 个元素 在容器中删除 第t个元素   a.erase(a.begin()+t);  
       最后容器中的最后一个元素就是活下来的人
*/
#include<iostream>
#include<stdio.h>
#include<string>
#include<string.h>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<cmath>
#include<iomanip>
using namespace std;
typedef int _____I;
const int N=1e6+10;
const int INF=0x3f3f3f3f;
#define ERX(___I,__I,_I) for(_____I ___I = __I;___I <  _I; ___I++)
#define ERD(___I,__I,_I) for(_____I ___I = __I;___I <= _I; ___I++)
#define RED(___I,__I,_I) for(_____I ___I = __I;___I >= _I; ___I--)

/*
 定义一个int型 x f 
 定义一个char型得到一个字符
 如果该字符不是数字 则再判断该字符是不是-号 如果是 就让f变-1 得到ch
 如果该字符是数字就进行累计 x=x*10+ch-'0';ch=getchar();
 最后 返回总结果值  
*/
int read(){
 int x=0,f=1;char ch=getchar(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值