Information
- ID
- 301
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 4
- Tags
- # Submissions
- 72
- Accepted
- 35
- Uploaded By
感觉我这种写法还是比较不好,空间开销有点大了,不知道有没有大佬有更好的写法....
#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;
}
By signing up a 追梦算法网 universal account, you can submit code and join discussions in all online judging services provided by us.