Vai al contenuto principale
← 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 vero

Si 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

Vanno bene sia 3,14 sia 3.14.