0
已采纳
黄子扬
初级天翼
初级天翼
好的,我这里有两种写法,代码是洛谷P1996约瑟夫的
一是队列,二是链表,个人觉得队列简单且好理解,链表的迭代器有种指针的意味,有些抽象
/*
#include<bits/stdc++.h>
using namespace std;
queue<int>q;
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
q.push(i);
while(q.size()>1)
{
for(int i=1;i<m;i++)
q.push(q.front()),q.pop();
cout<<q.front()<<" ";
q.pop();
}
cout<<q.front()<<endl;
return 0;
}
*/
#include<bits/stdc++.h>
using namespace std;
list<int>a;
int n,m,cnt;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
a.push_back(i);
list<int>::iterator it,now;
it=a.begin();
while(!a.empty())
{
cnt++;
now=it;
if(++it==a.end())
it=a.begin();
if(cnt==m)
{
cout<<*now<<" ";
a.erase(now);
cnt=0;
}
}
return 0;
}
注:不是本题代码,无举报
0