在计算最长公共子序列的长度时,为了减少空间需求可以使用滚动数组。给定两个序列,长度分别为m和n,可以将短的序列作为行,长的序列作为列,最后可将空间需求减至O(min(m,n))。
举一反三
- 使用动态规划算法求解最长公共子序列问题,引入数组c[i][j]存储序列x[1..i]和y[1..j]的最长公共子序列的长度,则对于长度为m和n的两条序列,其最长公共子序列的长度为c[m][n]。
- 使用动态规划算法求两条长度分别为m和n的序列的最长公共子序列,其时间复杂度为()。 A: O(n^2) B: O(n*m) C: O(nlogm) D: O(m^n)
- 使用动态规划算法求解最长公共子序列问题的时间复杂度为()。【m和n分别为两条序列的长度】 A: O(m+n) B: O(m*n) C: O(mlogn) D: O(m^n)
- 如果仅需要求得最长公共子序列的代价,则最长公共子序列的空间复杂性可以降低到O(n),其中n是两个序列中任意一个的长度
- 使用动态规划算法求两条长度分别为m和n的序列的最长公共子序列,其时间复杂度为( )。