我似乎无法弄清楚为什么我不断收到此错误!这是我第一次处理队列。我确信解决方案很简单,我可能缺少一些基本的东西。非常感谢任何指导/帮助:
import java.util.LinkedList;
import java.util.Queue;
public class Josephus{
public static void main(String[] args)
{
int n = Integer.parseInt(args[0]),
m = Integer.parseInt(args[1]);
Queue<Integer> q = new LinkedList<Integer>();
for (int i = 0; i < n; i++)
q.remove(new Integer(i));
int k = 0;
while (!q.isEmpty())
{
int x = q.remove();
if (++k % m == 0)
System.out.print(x + " ");
else
q.remove(x);
System.out.println(x + " ");
}
}
}
这段代码的原始提示如下:约瑟夫问题。在古代约瑟夫斯问题中,N 人处于水深火热之中,同意以下策略来减少人口。他们把自己排成一个圆圈(从 0 到 N-1 的位置)并绕着圆圈前进,淘汰第 M 个人,直到只剩下一个人。传说约瑟夫斯为了避免被淘汰而想出了坐在哪里。编写一个队列客户端 Josephus,它从命令行获取 N 和 M,并打印出人员被淘汰的顺序(从而显示 Josephus 在圆圈中的位置)。