这道题如果你的思维很局限,可以使用queue,先创建一个队列,正常输入,在queue中进行运算,代码如下:
#include<bits/stdc++.h> using namespace std; queue<int> q; int a,n,cnt;//cnt代表位置 int main(){ freopen("ysf.in","r",stdin); freopen("ysf.out","w",stdout); cin>>a>>n; for(int i=1;i<=a;i++) q.push(i);//q.push()输入 while(!q.empty()){//如果为空退出循环 cnt++; if(cnt==n){//如果到了出圈的人 cout<<q.front()<<" ";//q.front()出圈 q.pop();//删除出圈的人,q.pop()删除 cnt=0;//重新计数 } else { //如果这人不用出圈,重新刷新一下 int x = q.front(); q.pop(); q.push(x); } } return 0; }
题目3888 约瑟夫问题
3
评论
2024-01-08 21:30:02
|