约瑟夫环:若干人围成一个环,约定每间隔n个人,第n个人离开,剩下的人继续,直至所有人离开,输出离开顺序。
简单约瑟夫环使用数组即可实现。
//简单约瑟夫环
#include<iostream>
#include<cstdlib>
using namespace std;
void ysf(int *a, int n)
{
int i = n;
int k = -1, j = 0;
while (i >= 1)
{
while (j != 3)
{
k = (k + 1) % n;
if (a[k] == 0)
{
j++;
//a[k] = 1;
//cout << k << "有效 ";
}
}
a[k] = 1;
//cout << k - 1 << "置为 1 ";
j = 0;
cout << k + 1 << " ";
i--;
}
}
void ysf2(int *a, int n)
{
for(int i=0;i<n;i++)
{ }
}
int main()
{
int a[41];
for (int i = 0; i < 41; i++)
a[i] = 0;
ysf(a, 41);
system("pause");
return 0;
}