http://tyvj.cn/p/1071
LCIS经典问题,具体看这个
http://blog.youkuaiyun.com/Darost/article/details/52354660
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ms(i,j) memset(i, j, sizeof i);
using namespace std;
int n;
int a[3005], b[3005];
int f[3005];
int main()
{
scanf("%d", &n);
for (int i=1;i<=n;i++) scanf("%d", &a[i]);
for (int i=1;i<=n;i++) scanf("%d", &b[i]);
ms(f,0);
int ans = 0;
for (int i=1;i<=n;i++)
{
int k = 0;
for (int j=1;j<=n;j++)
{
if (a[i]==b[j])
{
f[j] = max(f[j], f[k]+1);
ans = max(ans, f[j]);
} else {
if (b[j]<a[i]) if (f[j]>f[k]) k = j;
}
}
}
printf("%d\n", ans);
return 0;
}