作业帮 > 综合 > 作业

约瑟夫问题:M个人围成一圈,从第一个人开始依次从1到N循环报数,每当报数为N时此人出圈,直到剩一人为止

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/22 10:48:58
约瑟夫问题:M个人围成一圈,从第一个人开始依次从1到N循环报数,每当报数为N时此人出圈,直到剩一人为止
请按退出次序输出出圈人原来的编号以及留在圈中的最后一个人原来的编号.请用TC编程,
约瑟夫问题:M个人围成一圈,从第一个人开始依次从1到N循环报数,每当报数为N时此人出圈,直到剩一人为止
#include "stdio.h"
#define M 65
int main()
{
int i,k,n,m,count;
int name[M];
scanf ("%d %d",&n,&m);// 有n个人
for (i = 0;i < n;i ++)//编号
{
name[i]= i +1;
}
k = 0;
for (i = 0;i < n;i ++)
{
count = 0;
while (count < m) //每到m个人就输入
{
while (name[k] == 0)
k = (k + 1)%n;
count ++;
k = (k + 1)%n;
}
k --;
if (k < 0)
k = n-1;
printf ("%d\n",name[k]);
name[k] = 0;
}
return 0;
}
如果哪里不明白,就提出来啊
约瑟夫问题:M个人围成一圈,从第一个人开始依次从1到N循环报数,每当报数为N时此人出圈,直到剩一人为止 M个人围成一圈,从第一个人开始依次从1循环报数,每当报数为N时此人从圈中出来,下一个人又从1开始报数, 求做一个C语言题目约瑟夫问题.M个人围成一个圈,从第一个人开始报数,数到N的人出圈,再由下一个人开始报数,数到N的人出圈 M个人围成一圈,从第一个人开始报数,数到n的人出圈.再由下一个人开始报数,数到n的人出圈,……输出依次 C 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人 C语言:有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 2:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子, 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出(pascal 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数, /*3、约瑟夫问题约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到