Sekwencja Józefa Flawiusza

Opis: Są ludzie stojący w kręgu czekający na wykonanie. Odliczanie zaczyna się w pewnym punkcie okręgu i krąży wokół okręgu w ustalonym kierunku. W każdym kroku pewna liczba osób jest pomijana i wykonywana jest następna osoba. Eliminacja przebiega wokół okręgu (który staje się coraz mniejszy w miarę usuwania wykonywanych ludzi), dopóki pozostanie tylko ostatnia osoba, która otrzyma wolność.

I Googled to „problem Josephus” i hit Wikipedii daje mi rozwiązanie do programowania dynamicznego:f(n,k)=((f(n-1,k)+k-1) mod n)+1, with f(1,k)=1, ale to daje tylko ostatniego ocalałego. Jak mogę uzyskać sekwencję ludzi wykonanych? Powiedz, p (5, 3) = {3,1,5,2,4}.

Jest teżO(nlogn) rozwiązanie zamiast aO(nk) jeden?

questionAnswers(5)

yourAnswerToTheQuestion