^ Referitor la algoritmul care returneaza cite pozitii au in comun 2 vectori ordonati crescator:
Sa luam un exemplu
v1 = (1, 3, 7, 8, 9);
v2 = (1, 5, 7, 8);
Variabila i parcurge pozitiile lui v1, respectiv j pozitiile lui v2.
Initial i:=1; j:=1; adica prima pozitie din vectori.
Daca v1[i]=v2[j] atunci avem un element in comun, incrementam contorul de elemente comune, deasemenea, pe i si pe j.
Daca v1[i]>v2[j] avem in v1 un element mai mare, si pentru ca vectorii sunt ordonati crescator, incrementam j (adica o sa citim urmatorul element mai mare din v2)
Restul cred ca e intuitiv, si se poate intelege din cod.
p.s. Cineva mi-a cerut ca ii fac un program de loto cu 45 de numere, in loc de
asta. Am considerat ca e mai bine sa public ce algoritmi am folosit, pentru ca fiecare sa isi faca ce doreste. Va urma si algoritmul folosit pentru scheme reduse.
L.E. (-- 27 Apr 2010, 13:42 --)Copie email trimis (catre persoana care solicita ceva similar cu ceea ce deja am publicat):
Descrierea algoritmului folosit:
Se genereaza combinarile de n luate cite k, in ordine lexicografica. (orice student la informatica ar cam trebui sa stie ce inseamna)
Prentru fiecare, se verifica conditia de acoperire, simplificat, cite elemente are in comun cu variantele deja incluse in lista.
Daca nu are in comun 2,3,4 numere (cit vrei) cu ce e deja in lista, se adauga.
Asta e algoritmul „prima neacoperita” realizat de mine, si recunosc ca nu e cine stie ce avansat, doar asigura gradul de ortogonalitate a vectorilor (variantelor in cazul nostru).