Java動態規劃演算法解決LCS問題

2021-09-10 05:32:10 字數 1177 閱讀 1643

最近專案中遇到lcs問題,於是研究了下,寫了乙個簡單的實現

public class longestcommonsubsequence )

private static map lcslength(string text1,string text2)else

}system.out.print(lengths[i][j]+" "+lenflags[i][j]+" ");}}

system.out.println();

}map map=new hashmap();

map.put("lengths", lengths);

map.put("lenflags", lenflags);

return map;

}/**

* 由最後乙個字元開始,判斷最後乙個字元是否屬於lcs,屬於則列印,不屬於,則通過lenflags判斷下乙個lcs在哪個結果集中

* @param lenflags 判斷最佳優子結構在哪個結果集

* @param text1 :

* @param text2 :

* @param text1lastindex :

* @param text2lastindex :

*/private static void getlcs(string lenflags,string text1,string text2,int text1lastindex,int text2lastindex)

string lenflag = lenflags[text1lastindex][text2lastindex];

string rtext1 = new string[text1lastindex];

string rtext2 = new string[text2lastindex];

system.arraycopy(text1, 0, rtext1, 0, text1lastindex);

system.arraycopy(text2, 0, rtext2, 0, text2lastindex);

if("leftup".equals(lenflag))elseelse}}

@suppresswarnings("rawtypes")

public static void main(string args)

}

LCS的動態規劃演算法

輸入 兩個字串 輸出 最長公共子串行 演算法思想 動態規劃 include include using namespace std string x,y 輸入串 int c 100 100 維護lcs length的陣列 int b 100 100 用於構造乙個最優解 int lcs len str...

動態規劃演算法

一 動態規劃演算法原理 將待求解的問題分解成若干個相互聯絡的子問題,先求解子問題,然後從這些子問題的解得到原問題的解 對於重複出現的子問題,只在第一次遇到的時候對它進行求解,並把答案儲存起來。了不去求解相同的子問題,引入乙個陣列,把所有子問題的解存於該陣列中,這就是動態規劃所採用的基本方法。動態規劃...

動態規劃演算法

動態規劃 通過把原問題分解為相對簡單的子問題來求解複雜問題。動態規劃常常適用於有重疊子問題和最優子結構性質的問題。演算法總體思想 演算法的基本步驟 演算法的基本要素 最優子結構 重疊子問題 備忘錄方法 問題描述 子串行 公共子串行 最長公共子串行 lcs 問題 問題分析 動態規劃求解lcs問題 最長...