#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int longest_common_subsequence( char *str1, char *str2, int k, int l )
{
int longest[k + 1][l + 1];
int i, j;
for (i = 0; i <= k; i++)
{ for (j = 0; j <= l; j++)
{
if (i == 0 || j == 0)
longest[i][j] = 0;
else if (str1[i - 1] ==str2[j - 1])
longest[i][j] = longest[i - 1][j - 1] + 1;
else
longest[i][j] = max(longest[i - 1][j], longest[i][j - 1]);
}
}
return longest[k][l];
}
int max(int a, int b)
{
if(a > b)
return a;
else
return b;
}
int main()
{
char str1[100];char str2[100];
printf("enter two strings to be compared"); scanf("%s %s",&str1
,&str2
);
int length= longest_common_subsequence( str1, str2, i, j );
printf("the lenght of the longest common subsequence is: %d",length
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGxpbWl0cy5oPgoKCmludCBsb25nZXN0X2NvbW1vbl9zdWJzZXF1ZW5jZSggY2hhciAqc3RyMSwgY2hhciAqc3RyMiwgaW50IGssIGludCBsICkgCnsgCglpbnQgbG9uZ2VzdFtrICsgMV1bbCArIDFdOyAKCWludCBpLCBqOyAKCQoJZm9yIChpID0gMDsgaSA8PSBrOyBpKyspICAKICAgIHsgZm9yIChqID0gMDsgaiA8PSBsOyBqKyspICAKICAgICAgICB7ICAKICAgICAgICBpZiAoaSA9PSAwIHx8IGogPT0gMCkgIAogICAgICAgICAgICBsb25nZXN0W2ldW2pdID0gMDsgIAogICAgICAgIGVsc2UgaWYgKHN0cjFbaSAtIDFdID09c3RyMltqIC0gMV0pICAKICAgICAgICAgICAgbG9uZ2VzdFtpXVtqXSA9IGxvbmdlc3RbaSAtIDFdW2ogLSAxXSArIDE7ICAKICAgICAgICBlbHNlCiAgICAgICAgICAgIGxvbmdlc3RbaV1bal0gPSBtYXgobG9uZ2VzdFtpIC0gMV1bal0sIGxvbmdlc3RbaV1baiAtIDFdKTsgIAogICAgICAgIH0gIAogICAgfSAgCiAgICByZXR1cm4gbG9uZ2VzdFtrXVtsXTsgIAp9IAoKaW50IG1heChpbnQgYSwgaW50IGIpIAp7IAoJaWYoYSA+IGIpCiAgICByZXR1cm4gYTsKICAgIGVsc2UKICAgIHJldHVybiBiOyAKfSAKCmludCBtYWluKCkgCnsgCgljaGFyIHN0cjFbMTAwXTtjaGFyIHN0cjJbMTAwXTsKICAgIHByaW50ZigiZW50ZXIgdHdvIHN0cmluZ3MgdG8gYmUgY29tcGFyZWQiKTsKICAgIHNjYW5mKCIlcyAlcyIsJnN0cjEsJnN0cjIpOwoKCQoJaW50IGkgPSBzdHJsZW4oc3RyMSk7aW50IGogPSBzdHJsZW4oc3RyMik7IAoJaW50IGxlbmd0aD0gbG9uZ2VzdF9jb21tb25fc3Vic2VxdWVuY2UoIHN0cjEsIHN0cjIsIGksIGogKTsgCiAgICBwcmludGYoInRoZSBsZW5naHQgb2YgdGhlIGxvbmdlc3QgY29tbW9uIHN1YnNlcXVlbmNlIGlzOiAlZCIsbGVuZ3RoKTsKCQoJcmV0dXJuIDA7IAp9IAoK