動態規劃 最長公共自序列 java

2021-09-08 11:24:45 字數 1046 閱讀 8818

package com.wanali.dynamic_planning;

/** * 最長公共自序列lcs(動態規劃求解)

* @author wan_ys

* * 2023年1月10日上午8:43:34

*/public class lcs ;

string y = new string ;

getlcslength(x, y);

} /**

* 計算lcs的長度

* @param x

* @param y

*/static void getlcslength(string x, string y)

//初始化第一行為0

for (int j = 0; j < n; j++)

/*從(1,1)開始往後比較x[i]==y[j],b[i][j]=c[i-1][j-1]+1;

* b[i-1][j]>=b[i][j-1],則該位置的箭頭向上指

* b[i][j-1]>b[i-1][j],則該位置的箭頭向左指

*/for (int i = 1; i < m; i++) else if (b[i - 1][j] >= b[i][j - 1]) else

}} //列印公共子串行的長度

for (int i = 0; i < m; i++)

system.out.println();

} //列印回溯方向

for (int i = 0; i < m; i++)

system.out.println();

} system.out.println("乙個最長公共自序列為:");

//注意這裡是m-1,n-1

getlcs(c, x, m-1, n-1);

} static void getlcs(string c, string x, int i, int j)

if (c[i][j] == "upleft") else if (c[i][j] == "up") else

}}

最長公共子串行(Java實現) 動態規劃

問題描述 給定2個序列x和y,當另一串行z既是x的子串行又是y的子串行時,稱z是序列x和y的公共子串行。給定2個序列x 和y 找出x和y的最長公共子串行。分析 最長公共子串行問題具有最優子結構性質 設x y 及它們的最長子序列 z 則1 若 xm yn 則 zk xm yn,且z k 1 是 x m...

動態規劃 最長公共子串行

問題描述 我們稱序列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...