3 solutions
-
0
感觉我这种写法还是比较不好,空间开销有点大了,不知道有没有大佬有更好的写法....
#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