陈一凡 • 3个月前
这题是一道经典的队列,需要运用到队列容器中的"push"和"pop",话不多说,上代码。
#include <bits/stdc++.h>
using namespace std;
int n,m;
queue<int> q;//定义队列
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
q.push(i);//将1~n全部放入队列当做编号
}
int i=1;//第一个人编号为1
while(q.size()!=0){
if(i==m){//如果报到了第m个人,就输出
cout<<q.front()<<endl;
q.pop();//将第m个人删除
i=1;//从第一个人开始重新报数
}
else{//一定要加else
i++;//没有报到m,下一个人
q.push(q.front());//让第一个人去最后,轮流报数
q.pop();//记得pop
}
}
return 0;//完结撒花
}
评论:
请先登录,才能进行评论