约瑟夫环

来源:互联网 发布:帝国cms和phpcms合并 编辑:程序博客网 时间:2024/06/09 15:35

题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.


#include <stdio.h>


int main ()
{
int num, i = 0, k = 0;
int flag[1000] = {0};
int person;


printf("Please input a number:\n");
scanf("%d",&num);


person = num;


while (person != 1)
{
if (flag[i] != 1)
{
k++;
if(k == 3)
{
flag[i] = 1;
person--;
k = 0;
}
}
i++;

if(i == num)
i = 0;

}
for (i = 0; i < num; i++)
if (0 == flag[i])
{
printf("the last one is %d\n",i + 1);


}


return 0;
}

运行结果:

原创粉丝点击