取出序列中某些特定的項並保持它們在原來序列中的順序,所得到的新序列成為原序列的子串行。
(所以說,子串行未必是連續的,連續的就叫子集了)
#include #include#includeusing namespace std;
const int max_n = 1000, max_m = 1000;
//輸入
int n, m;
char s[max_n], t[max_m];
int dp[max_n + 1][max_m + 1];//dp陣列
void solve()
else
}} cout << dp[n][m] << endl;
}int main()
for (int i = 0; i < n; i++)
memset(dp, 0, sizeof(dp));
solve();
return 0;
}
最長公共子串行(LCS)問題
問題描述 見演算法導論p208 p209 前提概念 給定乙個序列x x1,x2,xm 對i 0,1,m,記x的第i個字首為xi x1,x2,xi 故xm x,而x0是個空序列 乙個給定序列的子串行就是該序列去掉0個或多個元素 不一定連續 如bcdb是abcbdab的乙個子串行 基於以上定義,最長公共...
最長公共子串行問題LCS
乙個給定序列的子串行是指在原序列順序不變的基礎上刪去若干元素後得到的序列。給定兩個序列x和y,當乙個序列z既是x的子串行又是y的子串行時,稱z序列為x和y 的公共子串行。例如,x a,b,c,b,d,a,b y b,d,c,a,b,a 則序列 b,c,a 是x和y的乙個公共子串行,但不是x和y的最長...
最長公共子串行 LCS 問題
前言 學習過的知識,只要不經常使用就會忘記,所以在此寫部落格,記錄下來,方便自己,也可能有利於他人。最長公共子串行 lcs 問題。1.什麼是最長公共子串行?最長公共子串行,英文縮寫為lcs longest common subsequence 其定義是,乙個序列 s 如果分別是兩個或多個已知序列的子...