3 solutions

  • 0
    @ 2022-3-24 20:14:46

    感觉我这种写法还是比较不好,空间开销有点大了,不知道有没有大佬有更好的写法....

    #include<bits/stdc++.h>
    using namespace std;
    queue<int>  q;  //初始队
    queue<int> q1;  //存放临时数据,临时队
    queue<int>   q2;   //存放最终结果,结果队
    int main(){
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            q.push(i);
        }
    
        int index=0;
        while(!q.empty()){
             int temp=q.size();
             index=m%temp;
             int q1_number;  //存放临时出队的点
    
             if(index==0)  index+=temp;
             for(int j=0;j<index-1;j++){   //将点存放在临时队
                q1_number=q.front();
                 q1.push(q1_number);
                q.pop();
             }
    
           q1_number=q.front();
           q2.push(q1_number);  //插入结果队
           q.pop();
    
           for(int j=0;j<index-1;j++){    //恢复现场,将临时队的内容按顺序返回到初始队中
               q1_number=q1.front();
               q.push(q1_number);
               q1.pop();
           }
        }
    
        for(int i=1;i<=n;i++){
            cout<<q2.front()<<" ";
            q2.pop();
        }
    return 0;
    }
    
    

    Information

    ID
    301
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    4
    Tags
    # Submissions
    72
    Accepted
    35
    Uploaded By