摘要:
POJ2127 要求求最长公共上升子序列并输出方案。首先是n^3做法:f[i,j]表示a串匹配到第i位、b串匹配到第j位时的最长公共上升子序列。f[i,j]=f[i-1,j] or f[i-1,k]+1(a[i]与b[k]相同时)。然后考虑要优化到n^2,我们只需要每次在找f[i-1,k]时把复杂度转化为O(1)。我们用一个变量MAX记录i-1时到j为止最大的f[i-1,j],由于要求必须是上升序列,所以我们只当a[i]>b[j]时才去更新MAX。转移时用MAX+1去和f[i,j]比较即可。输出方案的话需要记录前驱数组pre,由于一维可能会导致错误的覆盖,所以应该用二维的pre数组。PO 阅读全文
posted @ 2012-08-17 08:01
Minty
阅读(184)
评论(0)
推荐(0)
浙公网安备 33010602011771号