求帮我做一个C语言题

题目是:约瑟夫问题.M个人围成一个圈,从第一个人开始报数,数到N的人出圈,再由下一个人开始报数,数到N的人出圈,输出依次出圈人的编号.M,N值由键盘输入.例如:M=8,N... 题目是:
约瑟夫问题.M个人围成一个圈,从第一个人开始报数,数到N的人出圈,再由下一个人开始报数,数到N的人出圈,输出依次出圈人的编号.M,N值由键盘输入.
例如:M=8,N=5则依次出圈的是5,2,8,7....
提示:可以设置变量j纪录当前报数人的编号(1-m),变量k为已出圈的人数,变量p为当前所报的数(1-n).数组a从下标1-m的各元素对应m个人的位置,相应的元素值为1是表示该人未出圈,为0时表示已出圈!

那位高人帮我解解 我新人 想了好久不会 !
展开
 我来答
leopord
2007-05-25 · 超过16用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
#include <conio.h>
int main( void )
{
int n, i = 0, m, p;
scanf("%d%d", &n, &m); //n总人数,m步长
while( ++i <= n )
{
p = i * m;
while (p > n)
p = p - n + (p - n - 1)/(m - 1);
printf("%d\n", p);
}
getch();return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式