[leetCode]1035.不相交的线

在这里插入图片描述


此题使用动态规化求解,使用dp[i][j]表示A[0~i-1]与B[0~j-1]中的最大连接数
A[i-1]==B[j-1]时:

dp[i][j] = dp[i-1][j-1]+1;

A[i-1]!=B[j-1]时:

dp[i][j] = Max(dp[i-1][j],dp[i][j-1]);

在这里插入图片描述

class Solution {
    public int maxUncrossedLines(int[] A, int[] B) {
        int[][] dp = new int[A.length+1][B.length+1];
        for(int i = 1; i < A.length + 1; i++){
            for(int j = 1; j < B.length + 1; j++){
                if(A[i - 1] == B[j - 1]){
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }else{
                    dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1]);
                }
            }
        }
        return dp[A.length][B.length];
    }
}
原文地址:https://www.cnblogs.com/PythonFCG/p/13859993.html