Sunteți pe pagina 1din 1

Ministerul Educaţiei Naționale

Olimpiada de Informatică – etapa națională Clasa a VIII-a


04-07 aprilie 2018

Descriere Problema 1 – gene


prof. Raluca Costineanu
Colegiul Național ”Ștefan cel Mare”, Suceava

Pentru determinarea gradului de similaritate dintre două secvențe putem număra, folosind doi vectori de
frecvență, numărul de apariții a fiecărui caracter în fiecare din cele două șiruri.
Gradul de similaritate îl obținem însumând numărul minim de apariții pentru fiecare caracter.

Pentru determinarea zonei pătratice de dimensiune maximă în care toate valorile gradelor de similaritate
depășesc pragul k, construim o matrice a cu n linii și m coloane în care fiecare element are valoarea 1
dacă gradul de similaritate a persoanei din zona respectivă depășește pragul k sau 0 în caz contrar.
Determinăm apoi, în O(n*m), pentru fiecare poziție (i,j) latura maximă a pătratului din care face parte
elementul și respectă restricția ca toate elemetele corespunzătoare din pătrat să fie mai mari egale 1, în
modul următor: dacă elementul curent este 1 atunci am putea extinde pătratul anterior determinat, deci
a[i,j]=min(a[i-1,j-1],a[i-1,j],a[i,j-1])+1, altfel latura va rămne 0.
Latura maximă a unui pătrat va fi valoarea maximă din matricea a.

S-ar putea să vă placă și