時限:1000ms 記憶體限制:200000k 總時限:3000ms
描述乙個給定序列的子串行是在該序列中刪去若干元素後得到的序列。確切地說,若給定序列x=,則另一串行z=是x的子串行是指存在乙個嚴格遞增的下標序列 ,使得對於所有j=1,2,…,k有:
xij = zj
如果乙個序列s即是a的子串行又是b的子串行,則稱s是a、b的公共子串行。
求a、b所有公共子串行中最長的序列的長度。
輸入輸入共兩行,每行乙個由字母和數字組成的字串,代表序列a、b。a、b的長度不超過200個字元。
輸出乙個整數,表示最長各個子串行的長度。
格式:printf("%d\n");
輸入樣例
programming
contest
輸出樣例
#include#include#include#includeusing namespace std;
int main()
; char a[202],b[202];
gets(a);
gets(b);
for(int i=1;i<=strlen(a);i++)
else
}} cout
}
演算法題9 動態規劃之最長公共子串行 最長公共子串
題目 如果字串1的所有字元按其在字串中的順序出現在另外乙個字串2中,則字串1稱之為字串2的子串行。注意,並不要求子子串行 字串1 的字元必須連續出現在字串2中。請編寫乙個函式,輸入兩個字串,求它們的最長公共子串,並列印出最長公共子串行。例如 輸入兩個字串bdcaba和abcbdab,字串bcba和b...
最長公共子串 最長公共子串 動態規劃
有兩個字串 可能包含空格 請找出其中最長的公共連續子串,輸出其長度。長度在1000以內 例如 輸入 abcde bcd 輸出 3 1 把兩個字串分別以行和列組成乙個二維矩陣。2 比較二維矩陣中每個點對應行列字元中否相等,相等的話值設定為1,否則設定為0。3 通過查詢出值為1的最長對角線就能找到最長公...
動態規劃之最長公共子串行演算法
動態規劃之最長公共子串行演算法 演算法思想 假設x x1,x2,xm y static void init xy void getchar for i 1 i n i getchar static void lcs length void else if c i 1 j c i j 1 else p...