约瑟夫环问题描述:编号为1,2… n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数, 报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程 序求出出列顺序。
我们可以利用数组解决这个问题:
#include <stdio.h>
#define N 7 /*圈里有7个人*/
void main()
{
/*circle数组的每一个数组元素表示圈内的一个人,元素的第一个域存放密码,第二个域存放与他顺时针
相邻的人得序号*/
/*count为计数器,alive为活