← OlimpiApp
Difficile
Informatica · Implementazione
Confronti nel calcolo della permutazione successiva
La funzione seguente trasforma la permutazione contenuta in a[1..10] nella successiva in ordine lessicografico, oppure restituisce falso se a è già decrescente. Nel primo while, quando i vale 0, la condizione a[i] > a[i+1] non viene valutata.
funzione successiva(a):
i = 9
while i >= 1 and a[i] > a[i+1]:
i = i - 1
if i == 0: return falso
j = 10
while a[j] < a[i]:
j = j - 1
scambia a[i] e a[j]
rovescia il tratto a[i+1..10]
return veroSi parte da a = (1, 2, …, 10) e si chiama successiva(a) finché restituisce falso. In tutto, quante volte viene valutato il confronto a[j] < a[i]?
La tua risposta:
La tua risposta
Vanno bene sia 3,14 sia 3.14.