2 2 4 1 5 5 6 3 1 1 5 6
2 1 2 2 2 2 2 2 2 2 2 2 2
3 1 2 2 2 2 2 2 3 3 3 3 3
1 1 2 2 3 3 3 3 3 4 5 5 5
5 1 2 2 3 4 5 5 5 5 5 6 6
6 1 2 2 3 4 5 6 6 6 6 6 7
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 10005
int dp[205][MAX];
int max(int x, int y)
{
return x > y ? x : y;
}
int main()
{
int n, m, t;
int i, j;
int a[205];
int b[MAX];
memset(dp, 0, sizeof(dp));
scanf("%d", &t);
scanf("%d", &n);
for (i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &m);
for (i = 1; i <= m; i++) {
scanf("%d", &b[i]);
}
for (i = 1; i <= n; i++) {
for (j = 1; j <= m; j++) {
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
if (a[i] == b[j])dp[i][j]++;
}
}
printf("%d\n",dp[n][m]);
// system("pause");
return 0;
}