#include <bits/stdc++.h>
using namespace std;
int n, a[100010], b[100010];
int f[10010][10010];
void dp()
{
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (a[i - 1] == b[j - 1])
f[i][j] = f[i - 1][j - 1] + 1;
else
if (f[i][j - 1] >= f[i - 1][j])
f[i][j] = f[i][j - 1];
else
f[i][j] = f[i - 1][j];
}
int main()
{
scanf("%d", &n);
for (register int i = 0; i < n; i++)
scanf("%d", &a[i]);
for (register int i = 0; i < n; i++)
scanf("%d", &b[i]);
for (register int i = 0; i <= n; i++)
f[i][0] = f[i][0] = 0;
dp();
cout << f[n][n] << endl;
return 0;
}
怎么写成一维的数组呀?