Pagini recente » Cod sursa (job #3318226) | Cod sursa (job #3338025) | Cod sursa (job #3323090) | Cod sursa (job #1028038) | Cod sursa (job #2670451)
#include <iostream>
#include <fstream>
#include <stack>
#include <algorithm>
#include <string>
#include <queue>
#include <vector>
#include <map>
using namespace std;
ifstream fin("cmlsc.in");
ofstream fout("cmlsc.out");
int N, M;
int v1[1500];
int v2[1500];
int stored[1500][1500];
int LCS(int n, int m) {
if (stored[n][m])
return stored[n][m];
int result;
if (n == 0 || m == 0)
result = 1;
else if (v1[n] == v2[m])
result = (1 + LCS(n - 1, m - 1));
else {
int tip1 = LCS(n, m - 1);
int tip2 = LCS(n - 1, m);
result = max(tip1, tip2);
}
stored[n][m] = result;
return result;
}
int main() {
fin >> N >> M;
for (int i = 1; i <= N; ++i)
fin >> v1[i];
for (int i = 1; i <= M; ++i)
fin >> v2[i];
fout << LCS(N, M) - 1;
return 0;
}