LCS的動態規劃演算法

2021-06-22 15:53:58 字數 580 閱讀 4112

/*

輸入:兩個字串

輸出:最長公共子串行

演算法思想:動態規劃

*/#include #include using namespace std;

string x,y; //輸入串

int c[100][100]; //維護lcs_length的陣列

int b[100][100]; //用於構造乙個最優解

int lcs_len(string x,string y)

//string x 有乙個字元的偏移,0表示↖

else if(c[i-1][j]>=c[i][j-1]) //1表示↑

else //-1表示←

}return c[m][n];

}void print_lcs(string x,int b[100],int i,int j) //構造乙個最優解

cout

cout

}

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

最近專案中遇到lcs問題,於是研究了下,寫了乙個簡單的實現 public class longestcommonsubsequence private static map lcslength string text1,string text2 else system.out.print lengt...

動態規劃演算法

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

動態規劃演算法

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