最长公共上升子序列(LICS) 模板

时间:2022-06-04 13:50:48
 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);
}