Pagini recente » Cod sursa (job #1434654) | Cod sursa (job #1641740) | Cod sursa (job #1709690) | Cod sursa (job #3224315) | Cod sursa (job #2822021)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("subsir.in");
ofstream fout("subsir.out");
#define DIM 500
#define MOD 666013
int dp[DIM + 1][DIM + 1], nrmod[DIM + 1][DIM + 1];
char s1[DIM + 1], s2[DIM + 1];
static inline void SubSirComMax(int lg1, char s1[], int lg2, char s2[]) {
for(int i = 1; i <= lg1; i++)
for(int j = 1; j <= lg2; j++)
if(s1[i - 1] == s2[j - 1]) {
dp[i][j] += 1 + dp[i - 1][j - 1];
nrmod[i][j] = 1;
}else {
if(dp[i - 1][j] > dp[i][j - 1]) {
dp[i][j] = dp[i - 1][j];
nrmod[i][j] = nrmod[i - 1][j];
}else {
dp[i][j] = dp[i][j - 1];
nrmod[i][j] = nrmod[i][j - 1];
}
}
}
int main() {
int lg1, lg2;
fin >> s1 >> s2;
lg1 = strlen(s1);
lg2 = strlen(s2);
SubSirComMax(lg1, s1, lg2, s2);
fout << nrmod[lg1][lg2];
return 0;
}