Editorial for Transformacija matrice


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence.

Author: admin

Analiza

Prvo što je potrebno primetiti u zadatku je da redosled operacija koje izvršavamo nad prvom matricom nije bitan. Tj. isto će biti ukoliko prvo promenimo vrednost jednog elementa, pa onda rotiramo matricu, ili ukoliko prvo rotiramo, pa onda zamenimo vrednost. To znači da prvo možemo raditi operacije rotacije, pa tek onda posle toga operacije promene vrednosti.

Takođe, možemo primetiti da nikada nećemo rotirati matricu više od 3 puta, jer ako je rotiramo 4 puta, onda dolazimo u istu poziciju kao na početku. Time smo zadatak sveli na 4 slučaja, u zavisnosti od toga koliko puta smo rotirali matricu (0 do 3 puta). Svaki put kada je rotiramo, proverićemo koliko se elemenata razlikuje, a broj različitih elemenata plus broj trenutnih rotacija do sada nam daje koliko je ukupno potrebno operacija za taj slučaj. Na kraju, zapamtićemo najmanji broj potrebnih operacija koji nam je trebao u nekom od ta 4 slučaja.

Smernice za algoritam

Za rotaciju kvadratne matrice A veličine NxN za 90 stepeni u desno je potrebno da primetimo da će na mesto polja (x,y) doći polje (y, N+1-x), ukoliko su polja indeksirana počev od 1. Tj. ukoliko želimo da dobijemo matricu A' koja je rotirana verzija matrice A, možemo je izračunati preko formule: A'[x][y] = A[y][N+1-x].


Comments

There are no comments at the moment.