7-2 约瑟夫环(c++)

这篇博客介绍了如何使用C++标准模板库(STL)中的vector进行元素操作。通过一个示例展示了如何初始化vector,设置并调整特定键值,以及在特定条件下删除元素的过程。在循环中动态修改vector的大小和内容,以实现特定序列的输出。这有助于理解STL容器的灵活性和实用性。
摘要由CSDN通过智能技术生成

这道题是简单运用了stl里vector的简单操作,具体就是先将顺序数字赋值进去

for(int i=1;i<=a;i++){
    nums[i]=i;}

之后我们定义三个键值

int o=0;
    int p=0;
    int n=0;

其中o是到第几个的时候将元素抛出,p是一个将输出序列输出题目要求的一个键值,而n是储存元素的数组长度。当o==b时,这个时候就是该将当前元素抛出

            o=0;
            cout<<' '<<nums[n]; 
            nums.erase(nums.begin()+n);
            n--;

其中o必须换为初值,n对应元素位置必须前移,而当n超出长度时,我们必须将其赋值为1,便于操作进行下去。

主要代码为

#include<bits/stdc++.h>
using namespace std;
int main()
{   int a,b;cin>>a>>b;
    vector<int>nums(a+1);
   
    for(int i=1;i<=a;i++){
	nums[i]=i;}
    int o=0;
    int p=0;
    int n=0;
    while(nums.size()!=1)
    {   
        if(o==b&&p==0)
        {
            o=0;p=1;
            cout<<nums[n]; 
            nums.erase(nums.begin()+n);
            n--;
        }
        else if(o==b)
        {
            o=0;
            cout<<' '<<nums[n]; 
            nums.erase(nums.begin()+n);
            n--;
        }
        o++;n++;
        if(n>=nums.size())n=1; 
    }
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B程洪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值