dp專題 第四題 最長公共子串行

2021-07-30 06:13:47 字數 409 閱讀 8476

1、簡單描述

多次測試輸入,輸入兩個字串,編號是上公升序列,查詢他們最長公共子串行的長度。

2、思路

# include using namespace std;

int main()

else}}

cout<1、尋找子問題    arr二維陣列前i個元素,前j個元素查詢最長公共子列

2、定義狀態  每個狀態結果與i、j有關,用二維陣列描述狀態,將子問題轉化為只考慮前i個元素和前j個元素的決策。

3、找狀態轉移方程

如果s1第i個元素與s2第j個元素相同,結果為arr【i-1】【j-1】+1;

如果不相同,相當於s1第i個元素或者s2第j個元素不起作用,結果為arr【i-1】【j】和arr【i】【j-1】中較大的值。

4、自下向上尋求最優解。

dp專題 最長公共子串行

最長公共子串行 題目描述 乙個給定序列的子串行是在該序列中刪去若干元素後得到的序列。確切地說,若給定序列x1,x2,x,則另一串行z1,z2,zk是x的子串行是指存在乙個嚴格遞增的下標序列使得對於所有j 1,2,k有 x例如,序列zb,c,d,b是序列xa,b,c,b,d,a,b的子串行,相應的遞增...

DP 最長公共子串行

解題報告 題目 演算法 dp 最長公共子串行 思路 最長公共子串行,英文縮寫為lcs longest common subsequence 其定義是,乙個數列 s 如果分別是兩個或多個已知數列的子串行,且是所有符合此條件序列中最長的,則 s 稱為已知序列的最長公共子串行。d i j 表示s1的第i位...

最長公共子串行 DP

有序子串行定義 若x 則它的子串行為y 即原序列調出若干項組成的序列且下標要求有序。lcs 最長公共子串行 定義 給定兩個序列x 和y 存在乙個嚴格遞增的x的下標序列為,對所有的j 1,2,3.k,滿足xi yj,例如x 1 4 3 2 5 y 4 3 5 7 則x和y的最長公共子串行為 4 3 5...