在网上找了一个空间优化的代码,有些步骤没看懂,大佬们能不能帮忙解释一下?
int dp[maxn];
int a[maxn],b[maxn];
int main()
{
    int m,n;
    int i,j;
    scanf("%d %d",&m,&n);
    for(i=1;i<=m;i++)
        scanf("%d",&a[i]);
    for(i=1;i<=n;i++)
        scanf("%d",&b[i]);
    memset(dp,0,sizeof(dp));
    for(i=1;i<=m;i++)
         //这个for循环里的内容没看懂
    {
        int maxx=0;
        for(j=1;j<=n;j++)
        {
            if(a[i]>b[j]) maxx=max(maxx,dp[j]);
            if(a[i]==b[j]) dp[j]=maxx+1;
        }
    }
    int ans=0;
    for(i=1;i<n;i++)
        ans=max(ans,dp[i]);
    printf("%d\n",ans);
    return 0;
}