時間限制:3000 ms | 記憶體限制:65535 kb
難度:3
描述 咱們就不拐彎抹角了,如題,需要你做的就是寫乙個程式,得出最長公共子串行。
tip:最長公共子串行也稱作最長公共子串(不要求連續),英文縮寫為lcs(longest common subsequence)。其定義是,乙個序列 s ,如果分別是兩個或多個已知序列的子串行,且是所有符合此條件序列中最長的,則 s 稱為已知序列的最長公共子串行。
輸入 第一行給出乙個整數n(0< n<100)表示待測資料組數
接下來每組資料兩行,分別為待測的兩組字串。每個字串長度不大於1000.
輸出 每組測試資料輸出乙個整數,表示最長公共子串行長度。每組結果佔一行。
樣例輸入
2 asdf
adfsd
123abc
abc123abc
樣例輸出 3 6
經典的dp問題
注意,子串行和子串的定義又是不一樣的,子串要求在原字串中是連續的。而最長公共子串行則並不要求連續。
有兩個字串a和b,長度分別是lena和lenb,那麼
動態轉移方程: 如果a[i-1]==b[j-1],則dp[i][j]=dp[i-1][j-1]+1;
否則,dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
#include
#include
using
namespace
std;
int dp[1001][1001];
int main()
}cout
0;}
NYOJ 36 最長公共子串行 動態規劃
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 咱們就不拐彎抹角了,如題,需要你做的就是寫乙個程式,得出最長公共子串行。tip 最長公共子串行也稱作最長公共子串 不要求連續 英文縮寫為lcs longest common subsequence 其定義是,乙個序列 s 如果分...
nyoj36最長公共子串行 動態規劃
tip 最長公共子串行也稱作最長公共子串 不要求連續 英文縮寫為lcs longest common subsequence 其定義是,乙個序列 s 如果分別是兩個或多個已知序列的子串行,且是所有符合此條件序列中最長的,則 s 稱為已知序列的最長公共子串行。接下來每組資料兩行,分別為待測的兩組字串。...
NYOJ 36 最長公共子串行 動態規劃基礎
時間限制 3000 ms 記憶體限制 65535 kb 難度 3描述 咱們就不拐彎抹角了,如題,需要你做的就是寫乙個程式,得出最長公共子串行。tip 最長公共子串行也稱作最長公共子串 不要求連續 英文縮寫為lcs longest common subsequence 其定義是,乙個序列 s 如果分別...