最長公共子串行 DP

2021-06-21 10:12:15 字數 535 閱讀 8430

有序子串行定義:若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>(下標不一定要連續).

題目描述:給定兩個字串,,輸出他們的最長公共子串行長度。

樣例輸入:

abcfbc abfcab

programming contest

abcd mnp

樣例輸出:

源**:

#include#include#define max 1001

using namespace std;

int max( int a , int b )

int dp[max][max];

char str1[max] , str2[max];

int main( )

cout<

DP 最長公共子串行

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

最長公共子串行 DP

最長公共子串行 lcs.pas c cpp 問題描述 乙個給定序列的子串行是在該序列中刪去若干元素後得到的序列。確切地說,若給定序列x x1,x2,xm 則另一串行z z1,z2,zk 是x的子串行是指存在乙個嚴格遞增的下標序列 i1,i2,ik 使得對於所有j 1,2,k有 xij zj 例如,序...

最長公共子串行 DP

演算法老師的作業,一道dp基礎題,給你兩個序列,問你最長公共子串行是什麼,比如 a,b 是 a,c,d,b 的子串行。注意不是最長公共子串,這裡的子串行可以不連續。兩個for迴圈就出來了,每乙個dp i j 可以從dp i 1 j 1 dp i 1 j dp i j 1 三種情況更新過來,取個最大的...