例如:n = 9, k = 1, m = 5
【解答】
出局人的顺序为5, 1, 7, 4, 3, 6, 9, 2, 8。
以上摘录自百度百科
/// <summary>
/// 约瑟夫环
/// </summary>
/// <param name="n">总数</param>
/// <param name="m">开始位置</param>
/// <param name="k">符合条件的数</param>
/// <returns></returns>
public void Josehp(int n, int m, int k)
{
//参数判断 是否异常
int[] array = new int[n];
for (int i = 0; i < n; i++)
{
array[i] = i + 1;
}
int count = 0;
int number = n;
while (number > 1)
{
for (int i = 0; i < n; i++)
{
if (m != 1)
{
i = m - 1;
m = 1;
}
if (array[i] == 0)
continue;
count++;
if (count == k)
{
array[i] = 0;
count = 0;
number--;
}
}
}
for (int i = 0; i < n; i++)
{
if (array[i] != 0)
{
Console.WriteLine("the result is:{0}", array[i]);
}
}
}