题目:
n个人围成一个圈,依次报数,每次数到x的人就出列,且开始位置在a处,求所有人出列的顺序。
#include<iostream>
using namespace std;
int main()
{
int n=20,a=0,x=5;
int count,current;
int * array = (int *)malloc(sizeof(int)*n);//建立一个数组,若array[i]==1表示在圈中,若array[i]变成0表示出列
for(int i=0;i<20;++i) //初始化
{
array[i] = 1;
}
current = a;
for(int j=0;j<n;++j)
{
count = 0;
while(count<x)
{
if(current>=n)
current = current % n;
if(array[current]==1)
{
++count;
}
++current;
}
if(array[current-1]==0)
current++;
cout<<current-1<<" -----------";
array[current-1]=0;
for(int i=0;i<20;++i)
{
cout<<array[i]<<" ";
}
cout<<endl;
}
return 0;
}