#4304. [GESP202412 八级 C++] 第 11 题

[GESP202412 八级 C++] 第 11 题

下面最长公共子序列程序中,横线处应该填入的是( )。

#define MAX(A, B) (((A) > (B)) ? (A) : (B))
#define MIN(A, B) (((A) < (B)) ? (A) : (B))
int dp[MAX_L + 1][MAX_L + 1];
int LCS(char str1[], char str2[]) {
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    for (int i = 0; i < len1; i++)
        for(int j = 0; j < len2; j++)
            if (str1[i] == str2[j])
                dp[i + 1][j + 1] = dp[i][j] + 1;
            else
                ________; // 在此处填入选项
    return dp[len1][len2];
}

{{ select(1) }}

  • dp[i + 1][j + 1] = dp[i][j + 1] + dp[i + 1][j]
  • dp[i + 1][j + 1] = MIN(dp[i][j + 1], dp[i + 1][j])
  • dp[i + 1][j + 1] = MAX(dp[i][j + 1], dp[i + 1][j])
  • dp[i + 1][j + 1] = MAX(dp[i][j + 1], dp[i + 1][j]) + 1