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

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.


Un cuvânt e anagramă a altui cuvânt dacă ele conțin aceleași litere, nu neapărat în aceeași ordine.


Date de intrare

Pe prima linie se află numărul N. Pe următoarele N + 1 linii se află cuvintele.


Date de ieșire

Programul va afișa numărul cerut.


Restricții

1 ≤ N ≤ 50

Lungimea fiecărui cuvânt este mai mică sau egală cu 100 000.

Exemple

Date de intrare Date de ieșire

4

server

revers

serve

sserver

server 2

Explicație

revers și server sunt anagramele cuvântului server.


simulink: Ordonezi alfabetic literele primului cuvant. Apoi ordonezi alfabetic literele din fiecare cuvant care are lungimea egala cu lungimea primului cuvant si compari cuvantul cu literele ordonate cu primul. Daca sunt la fel, ai gasit anagrame si le numeri. Este o idee de rezolvare...poti incerca si altele.
Ciupacabra14: Multumesc !

Răspunsuri la întrebare

Răspuns de andrei750238
11

#include <iostream>

#include <cstring>

using namespace std;

int main(){

int n,i,j,ncuvprop=0;

char cuv[100001];

//Citeste n,primul cuvant

cin >> n;

cin >> cuv;

//Determina numarul de aparitii a fiecarei litera

int p[26];

for(i=0;i<26;i++)p[i]=0;

for(i=0;i<strlen(cuv);i++){

       if(cuv[i]>='a' && cuv[i]<='z')p[cuv[i]-'a']++;

}

   int x[26];//Vector frecventa

//Pentru fiecare cuvant

for(j=1;j<=n;j++){

       //Curatare vector frecventa

       for(i=0;i<26;i++)x[i]=0;

       //Citeste cuvantul

       cin >> cuv;

       //Determina numarul de aparitii litere

       for(i=0;i<strlen(cuv);i++){

           if(cuv[i]>='a' && cuv[i]<='z') x[cuv[i]-'a']++;

       }

       //Verifica daca frecventa literelor e aceasi

       bool ok=1;

       for(i=0;i<26;i++){

           if(x[i]!=p[i])ok=0;

       }

       //Incrementeaza numarul de cuvinte gasite daca e cazul

       if(ok)ncuvprop++;

}

cout << ncuvprop;

}

Anexe:
Alte întrebări interesante