c_cpp 最长的公共子串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 最长的公共子串相关的知识,希望对你有一定的参考价值。

//https://www.geeksforgeeks.org/longest-common-substring-dp-29/
#include<iostream>
using namespace std;

int main() {
    string s,t;
    getline(cin,s);
    getline(cin,t);

    int n= s.length(), m= t.length(), res= INT_MIN;
    int dp[n][m];
    for (int i=0;i<n;i++) {
        for (int j=0;j<m;j++) {
            if (s[i]!= t[j])
                dp[i][j]= 0;
            else {
                dp[i][j]= (i>0 && j>0)?(1+dp[i-1][j-1]):1;
                res= max(res, dp[i][j]);
            }
        }
    }
    cout<< res;
}
//https://www.geeksforgeeks.org/longest-common-substring-dp-29/
#include<iostream>
using namespace std;

int main() {
    string s,t;
    getline(cin,s);
    getline(cin,t);

    int n= s.length(), m= t.length(), res= INT_MIN;
    int dp[n+1][m+1];//dp[i][j] contains length of longest
    // common suffix of s[0..i-1] and t[0..j-1]
    for (int i=0;i<=n;i++) {
        for (int j=0;j<=m;j++) {
            if (i==0 || j==0)
                dp[i][j]= 0;
            else if (s[i-1]==t[j-1]) {
                dp[i][j]= 1+dp[i-1][j-1];
                res= max(res,dp[i][j]);
            }
            else
                dp[i][j]=0;
        }
    }
    cout<< res;
}

以上是关于c_cpp 最长的公共子串的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 最长的子串

c_cpp 最长的对称子串

寻找最长公共子串(高分)

最长公共子串

最长公共子串和最长公共子序列

最长连续公共子串最长公共子串(可以非连续)最长回文串(连续)最长回文串(可以不连续)最长递增数组的求解