#include #include #include #include using namespace std; #define max(a,b) ( ((a) > (b)) ? (a) : (b)) int M[128][128]; int M2[128][128]; void LCS(int Matrix[128][128], char* A, char* B, int n,int m) { for (int i=1; i < n; i++) { for (int j=1; j < m; j++) Matrix[i][j] = A[i] == B[j] ? 1 + Matrix[i-1][j-1] : max(Matrix[i-1][j], Matrix[i][j-1]); } } char* printLCS(int Matrix[128][128], char* A, char* B, int n ,int m) { int i = n-1; int j = m-1; char lcs[128]; lcs[Matrix[i][j]] = '\0'; int k = Matrix[i][j] -1; while (k >= 0) { if (A[i] == B[j]) { lcs[k] = A[i]; i--; j--; k--; } else { if (i== 0) j--; else if (j == 0) i--; else if (Matrix[i-1][j-1] == Matrix[i][j]) { i--; j--; } else if (Matrix[i-1][j] == Matrix[i][j]) i--; else j--; } } //printf("%s\n", lcs); return lcs; } void display(int Matrix[128][128], int n, int m) { cout << endl; for (int i=0; i < n; i++) { for (int j=0; j < m; j++) cout << Matrix[i][j] << " "; cout << endl; } cout << endl << endl; } ofstream fout("output.txt"); void init(int Matrix[128][128], char* A, char* B, int n ,int m) { for (int i= 0; i < n; i ++) { if (A[0] == B[i]) while (i