Buongiorno a tutti. Avrei un problema con un algoritmo che da poco ho implementato ovvero la LCS (massima sottosequenza comune). In pratica l'algoritmo è implementato correttamente e funziona alla grande ma ho un problema con la stampa, cioè in pratica mi stampa prima le parole con meno occorrenze e poi quelle con più occorrenze. So che può sembrare una cosa banale da risolvere ma mi sta mandando in tilt e vorrei risolvere senza cambiare troppo il codice che ho già implementato.
di seguito vi posto il codice:
codice:
void HashMap::LCS (string vocabolo)
{
for (iteratore=dMap.begin(); iteratore != dMap.end() ; iteratore++)
{
string secondotermine = iteratore -> second ;
int lungh1=vocabolo.size(), lungh2=secondotermine.size();
int i=0,j=0;
int array[100][100];
for (int i=0; i<=lungh1; i++)
array[i][0]=0;
for (int j=0; j<=lungh2; j++)
array[0][j]=0;
for (int i=1; i<=lungh1; i++)
{
for (int j=1; j<=lungh2; j++)
{
if (vocabolo[i]==secondotermine[j])
array[i][j]=array[i-1][j-1]+1;
else if (array[i-1][j]>=array[i][j-1])
array[i][j]=array[i-1][j];
else
array[i][j]=array[i][j-1];
}
}
i=lungh1, j=lungh2;
if (array[i][j] >= 3)
cout << "Intendevi forse " << secondotermine << "?" << endl;
}
}
In pratica io ho un dizionario hash di parole salvate in una multimap che andrò a scorrere tutta e confronto tutte le parole nella multimap (il ciclo esterno) con quella che passo alla funzione. Lui trova le occorrenze e alla fine se sono più/uguali a 3 stampa il "suggerimento". Il programma ripeto funziona benissimo, trova le occorrenze perfettamente.Ho provato a cambiare la condizione finale ma niente, ho fatto vari tentativi ma nulla. Sapreste aiutarmi? ve ne sarei grato.
Grazie mille per l'aiuto