要求:两个序列的最长公共子序列
思路:二维动规,注意不能只遍历长的匹配短的,例如abcd,ec,需要ij都循环
class Solution {
public:
int longestCommonSubsequence(string text1, string text2) {
int n1=text1.length(),n2=text2.length();
vector<vector<int>> dp(n1+1,vector<int>(n2+1));
for(int i=1;i<=n1;++i){
for(int j=1;j<=n2;++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[n1][n2];
}
};