void LICS()
{
for (int i=;i<=n;i++)
{
int ma=;
for (int j=;j<=n;j++)
{
if (a[i]==b[j])
f[i][j]=ma+;
else f[i][j]=f[i-][j];
if (b[j]<a[i] && f[i-][j]>ma)
ma=f[i-][j];
ans=max(ans,f[i][j]);
}
}
printf("%d\n",ans);
}
空间优化到一维:
void LICS()
{
for (int i=;i<=n;i++)
{
int ma=,tmp;
for (int j=;j<=n;j++)
{
tmp=ma;
if (b[j]<a[i] && f[j]>ma)
ma=f[j];
if (a[i]==b[j])
f[j]=tmp+;
ans=max(ans,f[j]);
}
}
printf("%d\n",ans);
}