動態規劃思想如下:
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...