Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //task LONGEST COMMON SUBSEQUENCE
- #include <iostream>
- using namespace std;
- int max(int a, int b)
- {
- return a > b ? a : b;
- }
- int main()
- {
- int n_a, n_b;
- cin >> n_a >> n_b;
- int* a = new int[n_a];
- int* b = new int[n_b];
- for (int i = 0; i < n_a; i++)
- {
- cin >> a[i];
- }
- for (int i = 0; i < n_b; i++)
- {
- cin >> b[i];
- }
- int** m = new int*[n_a + 1];
- for (int i = 0; i <= n_a; i++)
- {
- m[i] = new int[n_b + 1];
- }
- for (int i = 0; i <= n_a; i++)
- {
- m[i][0] = 0;
- }
- for (int j = 0; j <= n_b; j++)
- {
- m[0][j] = 0;
- }
- for (int i = 1; i <= n_a; i++)
- {
- for (int j = 1; j <= n_b; j++)
- {
- m[i][j] = max(m[i - 1][j], m[i][j - 1]);
- if (a[i - 1] == b[j - 1])
- {
- m[i][j] = max(m[i][j], m[i - 1][j - 1] + 1);
- }
- }
- }
- cout << m[n_a][n_b];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment