• Codevs 1425 最长公共子串


    1425 最长公共子串

     

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 青铜 Bronze
     
     
     
    题目描述 Description

    输入N(2<=N<=20)个字符串,输出最长公共子串。

    输入描述 Input Description

    输入N

    再输入N个字符串

    输出描述 Output Description

    输出最大公共子串。

    样例输入 Sample Input

    3

    abce

    cabk

    jaab

    样例输出 Sample Output

    ab

    /*
        好像这种求多串最长公共子串要用后缀数组或者自动机什么的
        我这个就比较暴力了
    */
    #include<iostream>
    #include<string>
    using namespace std;
    const int N=22;
    int INF=1<<30;
    int a[N],n1;
    string str[N];
    int main(){
        cin>>n1;
        for(int i=0;i<n1;i++){
            cin>>str[i];
            if(INF>str[i].size())
                INF=str[i].size();
        }
        if(n1==1){
            cout<<str[0];
            return 0;
        }
        for(int i=INF;i;i--){//枚举长度为INF的子串,从大往小 
            for(int j=0;j<str[0].size()-i;j++){//从第一个位置开始枚举子串 
                bool flag=true;
                for(int k=1;k<n1;k++)
                    if(str[k].find(str[0].substr(j,i) )== string::npos)
                       flag=false;
                       if(flag){
                           cout<<str[0].substr(j,i);
                           return 0;
                       }
            }
        } 
        return 0;
    }
  • 相关阅读:
    Mysql主从同步延迟问题及解决方案
    elasticsearch 查询过程
    RPC(Remote Procedure Call):远程过程调用
    windows
    设计模式
    Linux Safe
    AS
    开机启动
    springboot打包部署
    【Linux】Linux 常用命令汇总
  • 原文地址:https://www.cnblogs.com/thmyl/p/7290506.html
Copyright © 2020-2023  润新知