演算法設計與分析 2 最長公共子串行

2021-10-01 13:59:52 字數 618 閱讀 7484

有序列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,那麼 用...