题目:最长公共子序列
int longestCommonSubsequence(string text1, string text2) {
int m = text1.size();
int n = text2.size();
// dp[i][j], 以text1[i-1]和text2[j-1]为终点计算的最长公共子序列
// 设置 m+1 和 n+1 长度,可以避免需要对等于0 的情况进行特殊处理的问题
vector<vector<int>> dp(m+1, vector<int>(n+1, 0));
// 遍历计算dp数组
for(int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (text1[i-1] == text2[j-1]) {
dp[i][j] = dp[i-1][j-1] + 1;
} else {
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
}
return dp[m][n];
}





Loading Comments...