時間限制:3000 ms | 記憶體限制:65535 kb
描述咱們就不拐彎抹角了,如題,需要你做的就是寫乙個程式,得出最長公共子串行
tip:最長公共子串行也稱作最長公共子串(不要求連續),英文縮寫為lcs(longest common subsequence)。其定義
是,乙個序列 s ,如果分別是兩個或多個已知序列的子串行,且是所有符合此條件序列中最長的,則 s 稱為已知序
列的最長公共子串行。
輸入第一行給出乙個整數n(0
接下來每組資料兩行,分別為待測的兩組字串。每個字串長度不大於1000.
輸出每組測試資料輸出乙個整數,表示最長公共子串行長度。每組結果佔一行。
樣例輸入
2asdf
adfsd
123abc
abc123abc
樣例輸出
36
此題有如下遞推關係式,當si = ti時,dp[i+1][j+1] = max(dp[i][j]+1,dp[i+1][j]) ;其他情況就是dp[i+1][j+1] = max(dp[i][j+1]+1,dp[i+1][j]) .s序列和t序列是從0開始
#include#include#includeusing namespace std;
char s[1010],t[1010];
int dp[1002][1002];
int main()
{ int n,i,j,c1,c2;
scanf("%d",&n);
while(n--)
{memset(dp,0,sizeof(dp));
scanf("%s%s",s,t);
c1 = strlen(s);
c2 = strlen(t);
for(i = 0; i
NYOJ36 最長公共子串行
題目分析 假設兩個字串分別標記為str1和str2。建立乙個二維的表dp,dp i j 表示str1的前i個字元和str2的前j個字元的最長公共子串行的個數,遍歷str1和str2的所有元素,如果str1 i str2 j 則dp i j dp i 1 j 1 1 否則dp i j max dp i...
nyoj 36 最長公共子串行
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 咱們就不拐彎抹角了,如題,需要你做的就是寫乙個程式,得出最長公共子串行。tip 最長公共子串行也稱作最長公共子串 不要求連續 英文縮寫為lcs longest common subsequence 其定義是,乙個序列 s 如果分...
NYOJ 36 最長公共子串行
時間限制 3000 ms 記憶體限制 65535 kb難度 3 描述 咱們就不拐彎抹角了,如題,需要你做的就是寫乙個程式,得出最長公共子串行。tip 最長公共子串行也稱作最長公共子串 不要求連續 英文縮寫為lcs longest common subsequence 其定義是,乙個序列 s 如果分別...