题目:
有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),
凡报到3的人退出圈子,问最后留下的是原来第几号。
程序如下:
#include <stdio.h>
int main()
{
int a[100];
int i,n,q;
int p = 0;
printf("input number:");
scanf("%d",&n);
q = n;
for (i = 0; i < n; i++)
a[i] = i+1;
for(i = 0; ; i++)
{
if(i == n)
i = 0;
if(a[i] != 0)
p++;
else
continue;
if(p%3 == 0)
{
a[i] = 0; q--;
}
if(q == 1)
break;
}
for(i = 0; i < n; i++)
{
if(a[i] != 0)
printf("spare: %d\n", a[i]);
}
return 0;
}
本文提供了一个使用C语言解决约瑟夫环问题的程序示例。通过不断移除编号为3的人直至只剩一人,该程序能找出最终留下的成员编号。
2万+

被折叠的 条评论
为什么被折叠?



