假设报到3的人出列
void Select(int a[],int len,int s)
{
int i=s
;//记录开始报数的位置,注意s要小于len
int j=0
;//记录报数
int count=0
;//表示在开始前有0个人出列
while(count<len-1)
{
j++;
if(j==3 && a[i]!=0
)//报到3,且该人还未出列
{
a[i]=0;//出列
j=0;
}
i++;
//下面两条语句是使其报数循环起来
if(i==len)
i=0;
}
}
这是一个简单点的解法,当然还可以用队列实现,思路都一样