void josephus(int iTotal, int iInter)
{
static int *iArr = new int[iTotal];
int j = 0; // j:间隔数iInter的游标
int iOut = 0;
for (int i = 0; ; ++i) // i:全部小孩iTotal的游标
{
i %= iTotal;
void josephus(int iTotal, int iInter)
{
static int *iArr = new int[iTotal];
int j = 0; // j:间隔数iInter的游标
int iOut = 0;
for (int i = 0; ; ++i) // i:全部小孩iTotal的游标
{
i %= iTotal;
if (1 == iArr[i]) // 已经出去了
continue;
++j; // 此位置上的小孩还没有出去,j++;
if (iInter == j) // 已经输了iInter 个小孩,让这个小孩出去
{
iArr[i] = 1;
j = 0;
++iOut;
cout << i << endl;
}
if (iTotal == iOut) // 全出去了
return;
}
}