動態規劃解決最長公共子串行LCS

2021-09-20 21:53:15 字數 501 閱讀 4495

動態規劃思想如下:

1.刻畫最長公共子串行的結構特徵

2.寫出遞迴表示式

設c[i,j]為lcs的長度,i表示序列x的長度,j表示序列y的長度

那麼c[i,j]=   0 ,                         i=0||  j=0

= c[i-1,j-1]+1;            xi=yj

=max(c[i-1,j],c[i,j-1]), xi   !=yi

好了說了一大堆套話,上**。

#include#include#include#define max(a,b) ((a)>(b)? (a):(b))

char * insert(char *str,char c)

{ int n=strlen(str);

char * in_str=malloc(sizeof(char)*(n+1));

in_str[0]=c;

for(int i=1;i思路比較簡單,就不解釋了。

動態規劃解決最長公共子串行和最長公共子串

找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。而找兩個字串的最長公共子串行,只要求子串行的字元都在原字串中出現且保持相對順序不對 動態規劃 1.最長公共子串,s1 a1a 2a3.am s2 b 1b2b 3.b n 狀態轉移方程 記f i,j 是以a i 和 b j 結尾的字 符串的最...

動態規劃 最長公共子串行

問題描述 我們稱序列z z1,z2,zk 是序列x x1,x2,xm 的子串行當且僅當存在嚴格上公升的序列 i1,i2,ik 使得對j 1,2,k,有xij zj。比如z a,b,f,c 是x a,b,c,f,b,c 的子串行。現在給出兩個序列x和y,你的任務是找到x和y的最大公共子串行,也就是說要...

動態規劃 最長公共子串行

兩個序列的最長公共子序 lcs longest common length 的 每個字元可以不連續,如x y 那麼它們的最長公共子串行為。這是乙個經典的動態規劃問題,著手點還是找到 最精髓的 狀態轉移方程 假設x,y兩個序列的前i,j個位置的最大子串行已經找到為r i j 自底往上 那麼x i 與y...