Informatică, întrebare adresată de MAndreea99, 8 ani în urmă

Buna, am si eu o intrebare:
Cum pot compara daca intr un sir de cuvinte se gasesc anagrame a unui cuvant?
Se dă un număr N și N + 1 cuvinte formate din litere mici ale alfabetului englez. Să se afle numărul de cuvinte (excluzându-l pe primul) care sunt anagrame ale primului cuvânt.
4
server
revers
serve
sserver
server
Sa afiseze 2...
As putea folosi strcmp intr un for sau? Stiu ca anagramele sunt cuvintele cu aceleasi litere nu neaparat in oridine consecuvita


Madalin77: daca ai numai litere mici ale alfabetului englez, poti declara i
Madalin77: un vector de frecventa de 25 de elemente, si sa pui elementele din cuvantul tau principal cu un for, si o sa ai ceva de genul frec[a[i]-'a']++.Dupa care iei pe rand cuvintele si o sa le pui in vectorul de frecventa. frec[b[i]-'a']-- si scazi. Pana sa treci la urmatorul cuvant verifici daca in vectorul de frecventa ai elemet diferit de 0, daca da, nu sunt anagrame, daca nu, sunt anagrame .Dupa care o iei de la capat
MAndreea99: Hm, o sa incerc, multumesc.
Porecla0987: Avand in vedere ca-i pentru scoala si profesorii nu sunt la curent cu C++, presupun ca folosesti "cstring". Daca presupunerea e corecta, poti compara cu "strcmp".
MAndreea99: Da, nu prea reusesc sincer, am incercat sa folosesc si un sir auxiliar pentru a interschimba intre ele cuvintele si a le compara insa nu prea functioneaza.
Porecla0987: Sau... Incearca cu un vector de frecventa.
Porecla0987: Sau... Parcurgi primul cuvant litera cu litera si o cauti in al doilea cuvant. Daca o gasesti, o tai (sa n-o gasesti de 4365675 de ori), altfel nu e anagrama.
MAndreea99: Am reusit

Răspunsuri la întrebare

Răspuns de AfloareiAndrei
0

Ai putea sa ordonezi alfabetic literele din fiecare cuvant si sa compari  cuvintele cu strcmp().

Literele le poti ordona alfabetic exact cum ai ordona cescator un sir de numere, doar ca in loc de -int- o sa folsoesti -char- sau chiar -string- pentru cuvant.

Dupa parcurig lista cu noile cuvinte si compari fiecare cuvant.

Daca vrei iti pot scrie un exemplu de program.


MAndreea99: Ah, stiu ce zici de ordonarea lor, o sa incerrc!
Alte întrebări interesante