有序列x=和y=,找出它們的最長公共子串行。可以按以下方式遞迴進行:當xm=yn時,找出xm-1與yn-1的最長公共子串行,然後在尾部加上xm(xm=yn),即可得x與y的最長公共子串行。當xm不等於yn時,必須解兩個子問題,即找出xm-1與y的最長公共子串行及x與yn-1的最長公共子串行,這兩個公共子串行較長者即為x與y的最長公共子串行。
void
lcslength
(int m,
int n,
char
*x,char
*y,int
**c,
int*
*b)else
if(c[i-1]
[j]>=c[i]
[j-1])
else}}
}void
lcs(
int i,
int j,
char
*x,int
**b)
else
if(b[i]
[j]==2)
lcs(i-
1,j,x,b)
;else
lcs(i,j-
1,x,b)
;}
演算法設計與分析 最長公共子串行
問題描述 給定兩個字串,求解這兩個字串的最長公共子串行 longest common sequence 比如字串1 bdcaba 字串2 abcbdab 則這兩個字串的最長公共子串行長度為4,最長公共子串行是 bcba 問題解決 1 窮舉法 列舉出所有的可能,但其時間複雜度較高不可取。2 遞迴法 設...
演算法設計與分析 5 最長公共子串行
書本 演算法分析與設計 功能 若給定序列x 則另一串行z 是x的子串行是指存在乙個嚴格遞增下標序列 使得對於所有j 1,2,k有 zj xij.給定兩個序列x 和y 找出x和y的最長公共子串行 檔案 mostlength.cpp include define maxlen 100 using nam...
最長公共子串行 與 最長公共子串
最長公共子串行 常用於解決字串的相似度,是指在母串中都出現過並且出現順序與母串保持一致的子串,不要求連續性。最長公共子串 是指在母串中連續出現的子串。例如 cnblogs belong 最長公共子串行為blog,最長公共子串為lo假設z z2,zk 是母串 x 與 y的最長公共子串行lcs,那麼 用...