Corso di Ottimizzazione Combinatoria (IN440)

Esercizi e sorgenti dei programmi

Visualizzazione di tutte le permutazioni di un insieme con n elementi

Il seguente programmino Python visualizza tutte le permutazioni degli elementi di un insieme di cardinalità n.

Codifica in linguaggio Python 3.x

n = int(input("Numero di elementi: "))
p = list()
for i in range(n):
   p.append(i);
print(p, end="\r")
k = n-2
cont = 0
while k>=0:
   k = n-2
   while k>=0 and p[k] > p[k+1]:
      k = k-1
   if k>=0:
      h = -1
      for i in range(k+1, n):
         if p[i] > p[k] and (h == -1 or p[i] < p[h]):
            h = i
      x = p[k]
      p[k] = p[h]
      p[h] = x
      p[k+1:n] = sorted(p[k+1:n])
      print(p, cont, end="\r")
      cont = cont+1
print()

Università degli Studi Roma Tre - Dipartimento di Matematica e Fisica - Corso di laurea in Matematica - Corso di Ottimizzazione Combinatoria (IN440)

Author: Marco Liverani - Last modified: Saturday September 05, 2020 - Document URI: https://www.mat.uniroma3.it/users/liverani/IN7/permutazioni.shtml