NYOJ36 最長公共子串行

2021-06-13 17:08:20 字數 602 閱讀 7068

題目分析:假設兩個字串分別標記為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 - 1][j],dp[i][j - 1])。為了防止陣列越界,分別在dp的最上面和最右面加一行、一列,賦值為0。計算過程如下表,紅色的數字代表需要加1的地方。ad

fsd0

0000

0a01

1111

s011

122d

0122

23f0

1233

3

#include#includeint dp[1001][1001];

char str1[1001];

char str2[1001];

inline int max(const int a, const int b)

int main()

} printf("%d\n", dp[nlen1][nlen2]);

}}

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 如果分別...

NYOJ 36 最長公共子串行

題目資訊 時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 咱們就不拐彎抹角了,如題,需要你做的就是寫乙個程式,得出最長公共子串行。tip 最長公共子串行也稱作最長公共子串 不要求連續 英文縮寫為lcs longest common subsequence 其定義是,乙個序列 ...