https://leetcode-cn.com/problems/uncrossed-lines/
思路:两个要点,第一是连线对应位置的数相等,第二是线与线之间不相交,说明相对位置是一样的。那么其实这道题就是在求两个序列的最长公共子序列。
class Solution {
public:
int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
int n=nums1.size(),m=nums2.size();
vector<vector<int>> dp(n+1,vector<int>(m+1));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(nums1[i-1]==nums2[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[n][m];
}
};