/* Olimpiadi di Informatica - Regionali 2008 Soluzione per problema: PIZZINI proposta prima: Carlo Salvagno 2008 - Referente Regionale VEN1 - ITIS "C. Zuccante" - Mestre (VE) IDEA RISOLUTIVA - vengono lette le n stringhe e caricate nel vettore seq - per ogni stringa vengono calcolate le frequenze delle cifre e caricate nella matrice freq, matrice di n righe e 10 colonne - per ogni stringa di posizione i si contano gli anagrammi prendendo in considerazione le stringhe da i a n; ogni volta che si trova che la stringa di posizione j è un anagramma della stringa i, si memorizza nel vettore indAnag la posizione j; il primo elemento del vettore indAnag contiene il valore conta; si riporta infine nella stringa codice i caratteri degli anagrammi trovati */ #include #include #include #include /* ------------------------------------------------------------------------- */ const int NMAX = 100; const char CODICE_NON_DEFINITO = ' '; typedef char* tStringa; typedef int tVettFreq[10]; typedef tVettFreq* tFreqStringhe; void calcolaFrequenze(tStringa riga, int i, tVettFreq* freq); void trovaAnagrammi(tVettFreq* freq, int pos, int numElem, char* codice, int* indAnag); int isAnag(const tVettFreq str1, const tVettFreq str2); /* ------------------------------------------------------------------------- */ int main(int argc, char *argv[]) { ifstream in("input.txt"); ofstream out("output.txt"); int r,i,numAnag; tStringa* seq; char riga[81]; char codice[NMAX+1]; int posAnag[NMAX+1]; int n; tFreqStringhe freq; in >> n; in.getline(riga, 80); // cout << n; codice[n]='\0'; freq= new tVettFreq[n]; seq= new tStringa[n]; /* -- Lettura input -- */ // lettura delle righe for ( r =0; r < n; r++ ) { codice[r] = CODICE_NON_DEFINITO; seq[r] = new char[81]; in.getline(seq[r], 80); calcolaFrequenze(seq[r], r, freq); // cout <<"\n" <