找出最长公共子序列的复杂性

时间:2013-06-15 22:27:34

标签: algorithm time-complexity

for(int i = 1; i < str1.length(); i++)
{
    for(int j = 1; j < str2.length(); j++)
    {
        if(str1[i] == str2[j]) c[i][j] = c[i-1][j-1] + 1;
        else c[i][j] = max(c[i-1][j], c[i][j-1]);
    }
}

这是算法,我需要找到这个算法的时间复杂度。我们假设:

m = str1.length()
n = str2.length()

因此显然是O(m * n)。

但我有几个问题:

  1. 考虑到比较和作业给出1个时间复杂度,这是真的,我会:

    O(3 * m * n *(3 + 1 + 2 + 2)) 时间复杂度?

  2. 如果必须完全分配数组,是否可以计算最坏情况,最佳情况或平均情况复杂度?

0 个答案:

没有答案
相关问题