约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
例如:m=3,数到3的人就出队列,下一个人接着从1开始计数!
方法一:
#include <stdio.h>
#define ALL 10 //总人数
#define OUT 3 //每三个出去一个
int people[ALL];//定义一个队列有ALL个人
void init_ring(void) //给队列赋值
{
int i = 0;
for(i = 0;i < ALL;i++)
{
people[i] = i + 1;
}
return;
}
void print_ring(void)//输出队列
{
int i = 0;
for(i = 0;i < ALL;i++)
{
printf("%d ",people[i]);
}
printf("\n");
return;
}
int main(void)
{
int left; //队列中剩余