matrici binarie
Progettare un algoritmo che prende come parametro un intero e stampa tutte le matrici binarie .
- le matrici binarie lunghe sono
Invece di gestire la matrice con append()
e pop()
come faremmo con una stringa, conviene crearla e gestirla andando avanti e indietro con gli indici.
def printmatr(n, sol, i=0, j=0):
if i == n: # saremmo ad una riga n+1 che non esiste
for row in sol:
print(row)
print()
return
i1, j1 = i, j+1
if j1 == n:
i1, j1 = i+1, 0
sol[i][j] = 0
es1(n, sol, i1, j1)
sol[i][j] = 1
es1(n, sol, i1, j)
def matrbin():
sol = [[0]*n for _ in range(n)]
printmatr(n, sol)
- l’albero di ricorsione generato da questo algoritmo è binario di altezza , e ha quindi nodi interni e foglie.
- ciascun nodo interno richiede e ciascuna foglia
L’algoritmo ha quindi complessità .
- poiché le matrici da stampare sono e la stampa di una matrice richiede , l’algoritmo è ottimo.