zoukankan      html  css  js  c++  java
  • 约瑟夫问题(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+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;
    }
    当初的梦想实现了吗,事到如今只好放弃吗~
  • 相关阅读:
    接口中解决默认方法冲突
    继承中的访问域问题
    继承中的多态问题
    Java中方法的调用过程
    【JS】表格获取每一列方法
    【Git报错】 ! [rejected] master -> master (fetch first)
    【Vue】vue-cli配置proxyTable调用服务器接口
    layui监听多个radio事件
    【总结】display属性inline,block,inline-block
    【实例总结】fixed定位元素内部滚动显示
  • 原文地址:https://www.cnblogs.com/caijiaming/p/9459548.html
Copyright © 2011-2022 走看看