您的位置:首页 > 其它

约瑟夫环(Josephus)问题

2017-06-20 00:00 549 查看
N个人坐成一圈,并从第一个人开始报数,报到M的人会被杀死,直到最后一个人留下来。请输出人们被杀死的顺序。

坐成一圈肯定是个Queue。

public static void main(String[] args) {
// initialize the queue
Queue<Integer> queue = new Queue<Integer>();
for (int i = 1; i < N; i++)
queue.enqueue(i);
while (!queue.isEmpty()) {
for (int i = 1; i < M; i++)
queue.enqueue(queue.dequeue());
System.out.println(queue.dequeue() + " ");
}
}

这里需要注意下面的for循环。我们隔M个人就把前M个人在队列中取出,然后再放入队列。

这是一个老外给的答案。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: