用C语言编写约瑟夫环问题?

有N个人,从某个人开始报数,报M,报m数得人出队,知道n个人都出队为止。... 有N个人,从某个人开始报数,报M,报m数得人出队,知道n个人都出队为止。 展开
 我来答
果子狸_2012
2012-06-10 · 超过24用户采纳过TA的回答
知道答主
回答量:142
采纳率:0%
帮助的人:78万
展开全部
这是我的个人解法,希望能够帮到你!
#include <stdio.h>
main()
{
int i,j,k=0,m,n,p=0,q=1,a[10001],b[10001];
scanf("%d%d",&m,&n);
for(i=1;i<=10000;i++)
{
if(i%m!=0) a[i]=i%m;
else a[i]=m;
}
for(i=n;i<=10000;i++)
{
for(j=1;j<=10000;j++)
if(b[j]==a[i])
{k=k-1; break;}
if((j==10001)&&(k%n==0))
{printf("%d ",a[i]);b[i]=a[i];p++;}
k++;
if(p==m)
break;
}
}
比如一共10个人,报2出列:
就可假想为:
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9......
报2出列,报出10个人为止。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式