zoukankan      html  css  js  c++  java
  • 最长子串问题

    //关于最长公共子串的一些简单想法
    //  if 求 str1 与 str2 的最长公共子串,可以将str1 每个字符与str2 每个字符建立矩阵 Grape[len1][len2]
    //  遍历 如果 str1[i]==str2[j] 则Grape[i][j] = 1
    //  因此最长的公共子串为Grape图中最长的1对角线长
    //  因此优化下
    //  if
    //      str1[i] != str2[j] Grape[i][j] = 0;
    //  else
    //      Grape[i][j] = Grape[i-1][j-1] + 1
    // 最长公共子串即为图中最大的值
    //  C实现
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    using namespace std;
    const int maxn = 1e4 + 15;
    int dp[maxn][maxn];
    int lset(const string& s1,const string& s2)
    {
        memset(dp,0,sizeof(dp));
        int maxLen = 0;
        for(int i=1;i<=s1.length();++i)
        {
            for(int j=1;j<=s2.length();++j)
            {
                if(s1[i-1]==s2[j-1])
                {
                    dp[i][j] = dp[i-1][j-1] + 1;
                    maxLen = max(maxLen,dp[i][j]);
                }
            }
        }
        return maxLen;
    }
    int main()
    {
        string str1,str2;
        while(cin>>str1>>str2)
        {
            cout<<lset(str1,str2)<<endl;
        }
    }
    不怕万人阻挡,只怕自己投降。
  • 相关阅读:
    695. 岛屿的最大面积(深搜)
    147. 对链表进行插入排序(排序)
    566. 重塑矩阵(模拟)
    238. 除自身以外数组的乘积(前后缀积)
    29.Java基础_接口
    C++ STL queue
    C++ STL stack
    C++ STL string
    C面向接口编程和C++多态案例
    单例模式入门
  • 原文地址:https://www.cnblogs.com/newstartCY/p/11561112.html
Copyright © 2011-2022 走看看