Descrizione: Ci sono persone in piedi in un cerchio che aspettano di essere giustiziate. Il conteggio inizia in un punto del cerchio e procede intorno al cerchio in una direzione fissa. In ogni fase, un certo numero di persone viene saltato e viene eseguita la persona successiva. L'eliminazione procede attorno al cerchio (che diventa sempre più piccolo man mano che le persone giustiziate vengono rimosse), fino a quando rimane l'ultima persona, a cui viene data libertà.sequenza Josephus
I Ho cercato su Google questo "problema Josephus" e il colpo di Wikipedia mi dà una soluzione di programmazione dinamica: f(n,k)=((f(n-1,k)+k-1) mod n)+1, with f(1,k)=1
, ma questo produce solo l'ultimo sopravvissuto. Come posso ottenere la sequenza delle persone giustiziate? Dì, p (5, 3) = {3,1,5,2,4}.
Inoltre, esiste una soluzione O(nlogn)
invece di una O(nk)
?
Interessante domanda. La simulazione – deadlock