[Java]使用队列求解josephus问题

时间:2022-08-20 20:08:33

约瑟夫斯问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环

[Java]使用队列求解josephus问题个囚犯站成一个圆圈,准备处决。首先从一个人开始,越过[Java]使用队列求解josephus问题个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过[Java]使用队列求解josephus问题个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。

问题是,给定了[Java]使用队列求解josephus问题[Java]使用队列求解josephus问题,一开始要站在什么地方才能避免被处决?(引用自*)

 public static void kill(int N,int M){
Queue<Integer> queue=new Queue<>();
for(int i=1;i<=N;i++){
queue.enqueue(i);
}
System.out.print("Killed: ");
while (queue.size()>1){
for(int i=0;i<M-1;i++){
int temp=queue.dequeue();
queue.enqueue(temp);
}
int killed=queue.dequeue();
System.out.print(killed+" ");
}
System.out.print("\nSafe: "+queue.dequeue());
}