Pagini recente » Cod sursa (job #1617232) | Monitorul de evaluare | Cod sursa (job #617931) | Istoria paginii utilizator/fr3ddy | Cod sursa (job #201860)
Cod sursa(job #201860)
#include<iostream>
#include<string>
using namespace std;
int a[501][501];
int b[501][501];
int main(void)
{
freopen("subsir.in", "r", stdin);
freopen("subsir.out", "w", stdout);
string s1;
string s2;
cin >> s1;
cin >> s2;
int l1 = s1.length();
int l2 = s2.length();
for(int i=0;i<=l1;++i)
{
a[i][0] = 0;
b[i][0] = 0;
}
for(int i=0;i<=l2;++i)
{
a[0][i] = 0;
b[0][i] = 0;
}
for(int i=1; i<=l1;++i)
{
for(int j=1;j<=l2;++j)
{
if(s1.at(i-1) == s2.at(j-1))
{
a[i][j] = a[i-1][j-1];
if(b[i-1][j-1] == 0)
b[i][j] = 1;
else
b[i][j] = b[i-1][j-1];
}else
{
if(a[i-1][j] > a[i][j-1])
{
a[i][j] = a[i-1][j];
b[i][j] = b[i-1][j];
}
if(a[i-1][j] < a[i][j-1])
{
a[i][j] = a[i][j-1];
b[i][j] = b[i][j-1];
}
if(a[i-1][j] == a[i][j-1])
{
a[i][j] = a[i-1][j];
if(s1.at(i-1) != s2.at(j-1))
{
b[i][j] = b[i-1][j] + b[i][j-1] - b[i-1][j-1];
}else
{
if(b[i-1][j] > b[i][j-1])
b[i][j] = b[i-1][j];
else
b[i][j] = b[i][j-1];
}
}
}
}
}
cout << b[l1][l2] << endl;
return 0;
}