1、数组解法
注意需要设三个变量:c用于报数,i用于遍历队列,peo计算剩余人数
#include<iostream>
using namespace std;
int n,m;
void solve()
{
int i,c,peo;
int a[301];
for (i=1;i<=n;i++)
a[i]=i;
c=0;i=0;peo=0;
while(peo<n-1)
{
i++;
if (i>n) i=1;
if (a[i]==0) continue;
c++;
if (c%m==0)
{
peo++;
a[i]=0;
}
}
for (i=1;i<=n;i++)
if (a[i]!=0)
break;
cout<<a[i]<<endl;
}
int main()
{
while(cin>>n>>m)
{
if (n==0 && m==0)
break;
solve();
}
return 0;
}
2、链表实现
两个变量:i计算剩余人数,c用于报数
#include<iostream>
using namespace std;
int n,m;
struct node
{ int v;node *next;};
void solve