1143. 最长公共子序列

class Solution {
public:
int max(int a, int b) { return a > b ? a : b; }
int longestCommonSubsequence(string text1, string text2) {
vector<vector<int> > dp(text1.size()+1, vector<int>(text2.size()+1, 0));
for(int ii = 1; ii <= text1.size(); ii++) {
for(int jj = 1; jj <= text2.size(); jj++) {
if(text1[ii-1] == text2[jj-1]) dp[ii][jj] = dp[ii-1][jj-1] + 1;
else dp[ii][jj] = max(dp[ii-1][jj], dp[ii][jj-1]);
}
}
return dp[text1.size()][text2.size()];
}
};

class Solution {
public:
int max(int a, int b) { return a > b ? a : b; }
int longestCommonSubsequence(string text1, string text2) {
vector<vector<int> > dp(text1.size(), vector<int>(text2.size(), 0));
for(int ii = 0; ii < text1.size(); ii++) {
for(int jj = 0; jj < text2.size(); jj++) {
if(ii == 0 && jj == 0) dp[ii][jj] = text1[ii] == text2[jj];
else if(ii == 0) dp[ii][jj] = max(dp[ii][jj-1], text1[ii] == text2[jj]);
else if(jj == 0) dp[ii][jj] = max(dp[ii-1][jj], text1[ii] == text2[jj]);
else {
dp[ii][jj] = max(dp[ii][jj-1], dp[ii-1][jj]);
dp[ii][jj] = max(dp[ii][jj], dp[ii-1][jj-1] + (text1[ii] == text2[jj]));
}
}
}
return dp[text1.size()-1][text2.size()-1];
}
};