Beschreibung: Es stehen Menschen in einem Kreis und warten darauf, ausgeführt zu werden. Das Auszählen beginnt an einem Punkt im Kreis und verläuft in einer festen Richtung um den Kreis herum. In jedem Schritt wird eine bestimmte Anzahl von Personen übersprungen und die nächste Person wird ausgeführt. Die Eliminierung geht um den Kreis herum (der mit der Entfernung der hingerichteten Menschen immer kleiner wird), bis nur noch die letzte Person übrig bleibt, der die Freiheit gegeben ist.Josephus Sequenz
Ich googelte dieses "Josephus-Problem" und der Wikipedia-Treffer gibt mir eine dynamische Programmierlösung: f(n,k)=((f(n-1,k)+k-1) mod n)+1, with f(1,k)=1
, aber dies ergibt nur den letzten Überlebenden. Wie kann ich die Reihenfolge der Leute ausführen? Sprich, p (5, 3) = {3,1,5,2,4}.
Gibt es auch eine O(nlogn)
Lösung anstelle einer O(nk)
eins?
Interessante Frage. – deadlock