- 本质上还是求两个字符串的最长子序列,因为每个子序列也是控制了字母的前后顺序,永远不会相交。
class Solution {
public:
int maxUncrossedLines(vector<int>& A, vector<int>& B) {
int m=A.size(),n=B.size();
vector<vector<int>> dp(m+1,vector<int>(n+1,0));
int res=0;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
if(A[i-1]==B[j-1])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
res=max(res,dp[i][j]);
}
return res;
}
};