1.3.37

1.3.37 #

解答 #

也就是约瑟夫问题,官方给出的 JAVA 版答案:Josephus.java

报数时将一个人出队然后入队来模拟一个环。

报到 M 个后将那个人出队但不入队(删除)

随后继续循环。

代码 #

var numOfPeople = 7;
var callForDeath = 2;

var queue = new Queue<int>();
for (var i = 0; i < numOfPeople; i++)
{
    queue.Enqueue(i);
}

while (!queue.IsEmpty())
{
    for (var i = 0; i < callForDeath - 1; i++)
    {
        queue.Enqueue(queue.Dequeue());
    }

    Console.Write(queue.Dequeue() + " ");
}

Console.WriteLine();

另请参阅 #

Generics 库

约瑟夫问题-维基百科——给出了约瑟夫问题的数学通解