Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Confronto tra vector di stringhe...
Forum - C/C++ - Confronto tra vector di stringhe...

Avatar
tommyprojects (Normal User)
Rookie


Messaggi: 29
Iscritto: 26/07/2009

Segnala al moderatore
Postato alle 12:50
Giovedì, 20/08/2009
Ho due vector di stringhe...

Codice sorgente - presumibilmente C/C++

  1. for (int x=0;x<insiemeA.size();x++) {
  2.         cout << "\n\n";
  3.         cout << insiemeA[x];
  4.         cout << "\n\n";
  5.         }
  6.        
  7.      for (int x=0;x<insiemeB.size();x++) {
  8.         cout << "\n\n";
  9.         cout << insiemeB[x];
  10.         cout << "\n\n";
  11.         }




ogni vector è formato da stringhe di questo tipo:
"1,2,3,4,9,21,34,78,79,82" ; "13,14,18,20,22,23,40,41,45,50" ecc...
e...
"34,78,22" ; "45,50,67,78,79,80"ecc...

ovvero il primo vector contiene elementi stringa di lunghezza fissa (nell'es.10)
il secondo vector contiene elementi stringa di lunghezza variabile (nell'es. 3 poi 6)

Io dovrei riuscire a:

confrontare ogni stringa del primo vector con ogni stringa del secondo ed evidenziare il numero di occorrenze uguali...

es:
"1,2,3,4,9,21,34,78,79,82";" VS "34,78,22" -> uguali: 2 : 34,78
"1,2,3,4,9,21,34,78,79,82";" VS "45,50,67,78,79,80" -> uguali: 2 : 78,79

Grazie infinite a chi mi può dare una mano per risolvere questo problemuccio... 8-)



Ultima modifica effettuata da tommyprojects il 20/08/2009 alle 12:51
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 13:15
Giovedì, 20/08/2009
prova a documentarti sull'algoritmo LCS(longest common subsequence)

PM Quote
Avatar
tommyprojects (Normal User)
Rookie


Messaggi: 29
Iscritto: 26/07/2009

Segnala al moderatore
Postato alle 14:35
Giovedì, 20/08/2009
Letto un pò qua e là... ma...
non credo si tratti di quello...

Nell'esempio che ho riportato in effetti i valori comuni erano casualmente contigui ma a me serve non di rintracciare la sottosequenza + lunga tra due stringhe (fatta dui caratteri contigui) bensì la quantita di elementi comuni costituenti le due stringhe indipendentemente dalla loro posizione all'interno delle stesse...

Credo possa risolvere in modo migliore facendo una cosa del genere (ma ignoro come si faccia..) :

scomposizione di ogni elemento stringa per ciascuno dei due array in un relativo sotto_array temporaneo e verifica tra tutti gli elementi di questi con incremento di una costante inizialmente inizializzata a 0 per ogni sotto_array esaminato indicante appunto la presenza di uno o più elementi in comune incrementandosi di 1 in caso di ogni verifica positiva...


Credi possa risolvere cosi'?

TNX


PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 11:58
Sabato, 22/08/2009
guarda che non sono così sicuro che la LCS sia da buttar via in questo problema.
se tu, nell'algoritmo LCS tieni conto dei separatori(virgole), puoi vedere comunque le due stringhe come vettori di valori contigui e per la questione dell'ordine, con qualche modifica si può gestire facilmente

PM Quote
Avatar
tommyprojects (Normal User)
Rookie


Messaggi: 29
Iscritto: 26/07/2009

Segnala al moderatore
Postato alle 16:38
Domenica, 23/08/2009
Testo quotato

Postato originariamente da lorenzo:

guarda che non sono così sicuro che la LCS sia da buttar via in questo problema.
se tu, nell'algoritmo LCS tieni conto dei separatori(virgole), puoi vedere comunque le due stringhe come vettori di valori contigui e per la questione dell'ordine, con qualche modifica si può gestire facilmente



sicuramente hai ragione ma io non saprei da dove cominciare... :blush:

PM Quote