Astazi va voi arata un algoritm foarte practic, dar ceva mai avansat si intr-o anumita masura mai interesant decat cele pe care vi le-am prezentat pana acum. Acesta consta in rotirea unei matrice patratice cu 90° in sensul acelor de ceasornic. Aceasta rotire a matricei necesita o matrice auxiliara in care o vom roti pe cea initiala, deoarece nu putem folosi o variabila ajutatoare. O alta varianta ar fi un vector auxiliar, dar astfel algoritmul se complica. Iata mai jos algoritmul de rotire cu 90° in sensul acelor de ceasornic sau spre dreapta a matricei "a" in matricea auxiliara "b":
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
b[i][j]=a[n-j+1][i];
Foarte simplu de retinut, nu-i asa? Dar care este explicatia? Imaginile de mai jos reprezinta matricea initiala "a" si matricea in care aceasta a fost rotita, adica "b", iar cu ajutorul lor vei vedea exact unde "va ajunge" fiecare element dupa efectuarea algoritmului de rotire.
No comments:
Post a Comment