Sample Input
abcfbc abfcab
programming contest
abcd mnp
Sample Output
4
2
0
#include <iostream>
#include <string>
using namespace std;
int a[500][500];
int max(int x, int y)
{
if(x > y)
{
return x;
}
return y;
}
int main()
{
int i, j, len1, len2;
string s1, s2;
while ( cin >> s1 >> s2 )
{
len1 = s1.size();
len2 = s2.size();
for(i = 0; i < 500; i++)
{
a[i][0] = 0;
a[0][i] = 0;
}
for( i =1; i <= len1; i++)
{
for( j = 1; j <= len2; j++)
{
if( s1[i-1] == s2[j-1])
{
a[i][j] = a[i-1][j-1] + 1;
}
else
{
a[i][j] = max(a[i-1][j], a[i][j-1]);
}
}
}
cout << a[len1][len2] << endl;
}
return 0;
}