假定有N个小朋友,分别编号为1到N,他们按编号围成一个圆圈,从1开始报数,当报到3的小朋友出列,由下一个小朋友重新开始报1,直到最后剩下一个小朋友.

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 04:44:13
假定有N个小朋友,分别编号为1到N,他们按编号围成一个圆圈,从1开始报数,当报到3的小朋友出列,由下一个小朋友重新开始报1,直到最后剩下一个小朋友.

假定有N个小朋友,分别编号为1到N,他们按编号围成一个圆圈,从1开始报数,当报到3的小朋友出列,由下一个小朋友重新开始报1,直到最后剩下一个小朋友.
假定有N个小朋友,分别编号为1到N,他们按编号围成一个圆圈,从1开始报数,当报到3的小朋友出列,由下一个小朋友重新开始报1,直到最后剩下一个小朋友.

假定有N个小朋友,分别编号为1到N,他们按编号围成一个圆圈,从1开始报数,当报到3的小朋友出列,由下一个小朋友重新开始报1,直到最后剩下一个小朋友.
static void LastLeaver(int nums, int count)
{
int[] num = new int[nums];
for (int index = 0; index< num.Length; index++)
{
num[index] =index + 1;//从1-nums给每个人编号
}
int m = 0; //m为退出人数
int i = 0;//i为每次循环时的计数变量
int k = 0;//k为按1,2,3count报数时的计数变量
while (m < nums - 1)
{
if (num[i] != 0)
{
k++;
}
if (k == count)
{
num[i] = 0;
Console.WriteLine("{0}出列!", i + 1);
k = 0;
m++;
}
i++;
if (i == nums) i = 0;
}
for (int j = 0; j < nums; j++)
{
if (num[j] != 0)
{
Console.WriteLine("最后留下的是:{0}", j + 1);
}
}
}