关键词:转为公共子序列
参考题解:动态规划,转化为最长公共子序列。典型的二维动态规划问题。
为了统一方便,数组从0开始一直到n+1.
状态转移方程:
class Solution {
public:
int maxUncrossedLines(vector<int>& A, vector<int>& B) {
vector<vector<int>> dp(A.size()+1,vector<int>(B.size()+1,0));
for(int i = 1;i<A.size()+1;++i){
for(int j = 1;j<B.size()+1;++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]);
}
}
}
return dp.back().back();
}
};
//https://leetcode-cn.com/problems/uncrossed-lines/solution/bu-xiang-jiao-de-xian-by-leetcode-soluti-6tqz/