Я не могу понять, почему я продолжаю получать эту ошибку! Я впервые имею дело с очередями. Я уверен, что решение простое, и я, вероятно, упускаю что-то основное. Любое руководство/помощь приветствуется:
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-го человека, пока не останется только один человек. Легенда гласит, что Иосиф Флавий придумал, где сесть, чтобы не быть уничтоженным. Напишите клиент очереди Иосифа, который берет N и M из командной строки и выводит порядок, в котором люди удаляются (и таким образом показывает Иосифу, где сидеть в круге).
for (int i = 0; i < n; i++) q.remove(new Integer(i));
... вы что-то удаляете из новой очереди? Как это должно работать? Вместо этого вы должны попробоватьq.add(...)
. А что должна делать строкаq.remove(x);
? Методremove
не принимает никаких аргументов. - person Tom   schedule 05.09.2014