#include <stdio.h>#include <string.h>#define MAX_LEN 100
int L[MAX_LEN + 1][MAX_LEN + 1];
int lcs(char X[], char Y[], int m, int n) {
for (int i = 0; i <=m; i++) {
for (intj = 0;j <= n;j++) {
if (i == 0 || j == 0)L[i][j] = 0;elseif (X[i-1] == Y[j-1])
L[i][j] = L[i-1][j-1] + 1;
elseL[i][j] = (L[i-1][j] > L[i][j - 1]) ? L[i - 1][j] : L[i][j - 1];
}
}
return L[m][n];
}
void printLCS(char X[], char Y[], int m, int n, int len) {
char lcs[MAX_LEN]; lcs[len] = '\0';
int i = m, j = n;
while (i > 0 && j > 0) {
if (X[i - 1] == Y[j - 1]) {
lcs[len - 1] = X[i - 1];
i--;
j--;
len--;
} else if (L[i - 1][j] > L[i][j - 1]) {
i--;
} else {
j--;
}
}
printf("Longest Common Subsequence: %s\n", lcs);
}
int main() {
char X[MAX_LEN], Y[MAX_LEN];
printf("Enter the first string: ");
scanf("%s", X);
printf("Enter the second string: ");
scanf("%s", Y);
int m = strlen(X);
int n = strlen(Y);
int len = lcs(X, Y, m, n);
if (len > 0) {
printLCS(X, Y, m, n, len);
} else {
printf("No common subsequence found.\n");
}
return 0;
}