题解 | #公共子串计算#
公共子串计算
https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b
#include <iostream> using namespace std; int main() { // dp[i][j]: s1[0..i)以s[i-1]结尾, s2[0..j)以s[j-1]结尾的LCS int dp[151][151] = {0}; int max_len = 0; string s1, s2; cin >> s1 >> s2; int len1 = s1.size(), len2 = s2.size(); // dp[x][0]与dp[0][x]必然为0 (按照定义是空串) for(int i = 1; i <= len1; ++i) { for(int j = 1; j <= len2; ++j) { dp[i][j] = s1[i-1] == s2[j-1] ? dp[i-1][j-1] + 1 : 0; max_len = max(max_len, dp[i][j]); } } printf("%d", max_len); }