// STRING MATCHING APPROSSIMATO // trovare un'occorrenza approssimata di una stringa pattern P in una stringa testo T #include #include using namespace std; char P[] = "XSDE"; // stringa pattern int m = 4; // lunghezza della stringa pattern P char T[] = "ABADEFGT"; // stringa testo int n = 8; // lunghezza della stringa testo T void displayDBtable(int m, int n, int *mat) { cout << " "; for(int j = 0; j < n; j++) cout << T[j] << " "; cout << endl; for(int i = 0; i < m; i++) { cout << P[i] << " "; for(int j = 0; j < n; j++) if(mat[ i*n + j ] < 0 ) cout << mat[ i*n + j ] << " "; else cout << mat[ i*n + j ] << " "; cout << endl; } cout << endl; cout << "press RETURN to continue ... "; getchar(); cout << endl; } void strm(int m, int n, char P[], char T[]) { int D[m][n]; /* D[i][j] = il numero minimo di modifiche (inserimenti/cancellazioni/cambi di carattere) che consenta di trasformare il prefisso P[0..i] del pattern P in un suffisso del prefisso T[0..j] del testo. in particolare: D[m-1][j] = il numero minimo di modifiche (inserimenti/cancellazioni/cambi di carattere) che consenta di trasformare il pattern P in un suffisso del prefisso T[0..j] del testo. */ // Inizializzazione della matrice D, prima regola for(int j=0; j