最大公共子序列的計算邏輯?
計算兩個數組的最長公共子序列.
設:C[i,j] = LCS(str1[1...i],str2[1...j]),
即C[i,j]表示序列str1[1...i]和str2[1...j]的最長公共子序列的長度,則 C[m,n] = LCS(str1,str2)就是問題的解(長度為m,n).
計算公式為:
if str1[i] == str2[j] then C[i,j] = C[i-1,j-1] +1;
else if str1[i] != str2[j] then C[i,j] = max{C[i-1,j] , C[i,j-1]}.