2018-07-02 14:39:18
一、最长公共子序列
对于LCS问题来说,有如下的递推式:
c[i,j]表示:(x1,x2....xi) 和 (y1,y2...yj) 的最长公共子序列的长度。
二、最长公共子串
递推式为:dp[i][j] = dp[i - 1][j - 1] + 1 if (xi == yj)
dp[i][j] = 0 else
问题描述:
问题求解:
public int findLength(int[] A, int[] B) { int res = 0; int[][] dp = new int[A.length][B.length]; for (int i = 0; i < A.length; i++) { for (int j = 0; j < B.length; j++) { if (A[i] == B[j]) { if (i == 0 || j == 0) dp[i][j] = 1; else { dp[i][j] = dp[i - 1][j - 1] + 1; res = Math.max(res, dp[i][j]); } } else dp[i][j] = 0; } } return res; }