給定序列
x=y=
求x和y的最長公共子串行(lcs)
用動態規劃解決最長公共子串行問題。
設dp[i][j]表示字串s1前i位與字串s2前j位的lcs,則dp[n][m]即為答案。
具體遍歷過程如下表:s1:2345678,s2:135789
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
char s1[
1010
], s2[
1010];
int n, m, dp[
1010][
1010];
intmain()
}printf
("%d"
, dp[n]
[m])
;}
主要時間複雜度在主函式dp遍歷的兩重迴圈中,所以時間複雜度為:
github原始碼位址
動態規劃解決最長公共子串行和最長公共子串
找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。而找兩個字串的最長公共子串行,只要求子串行的字元都在原字串中出現且保持相對順序不對 動態規劃 1.最長公共子串,s1 a1a 2a3.am s2 b 1b2b 3.b n 狀態轉移方程 記f i,j 是以a i 和 b j 結尾的字 符串的最...
演算法題9 動態規劃之最長公共子串行 最長公共子串
題目 如果字串1的所有字元按其在字串中的順序出現在另外乙個字串2中,則字串1稱之為字串2的子串行。注意,並不要求子子串行 字串1 的字元必須連續出現在字串2中。請編寫乙個函式,輸入兩個字串,求它們的最長公共子串,並列印出最長公共子串行。例如 輸入兩個字串bdcaba和abcbdab,字串bcba和b...
最長公共子串 最長公共子串 動態規劃
有兩個字串 可能包含空格 請找出其中最長的公共連續子串,輸出其長度。長度在1000以內 例如 輸入 abcde bcd 輸出 3 1 把兩個字串分別以行和列組成乙個二維矩陣。2 比較二維矩陣中每個點對應行列字元中否相等,相等的話值設定為1,否則設定為0。3 通過查詢出值為1的最長對角線就能找到最長公...