Gravatar
Lixj
积分:237
提交:88 / 241

这道题如果你的思维很局限,可以使用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