zoukankan      html  css  js  c++  java
  • hdu-2328(暴力枚举+kmp)

    题意:给你n个字符串,问你这n个串的最长公共子串

    解题思路:暴力枚举任意一个字符串的所有子串,然后暴力匹配,和hdu1238差不多的思路吧,这里用string解决的;

    代码:

    #include<iostream>
    #include<string>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    string t;
    int main()
    {
        int n;
        string a[4050];
        ios::sync_with_stdio(0);
        while((cin>>n)&&n)
        {
            int cot;
            int maxx=0;
            for(int i=1;i<=n;i++)
                cin>>a[i];
            int len=a[1].size();
            for(int i=0;i<len;i++)
            {
                for(int j=1;j<=len-i;j++)
                {
                    if(j<maxx)
                        continue;
                    cot=0;
                    for(int k=2;k<=n;k++)
                    {
                        if(a[k].find(a[1].substr(i,j))==string::npos)
                            break;
                        else
                            cot++;
                    }
                    if(cot==n-1)
                    {
                       // cout<<a[1].substr(i,j)<<endl;
                        if(j>maxx)
                        {
                            maxx=j;t=a[1].substr(i,j);
                        }
                        else if(j==maxx)
                        {
                            if(t>a[1].substr(i,j))
                                t=a[1].substr(i,j);
                        }
                    }
                }
            }
            if(maxx==0)
                cout<<"IDENTITY LOST";
            else
                cout<<t;
            cout<<endl;
        }
    }
    

      

  • 相关阅读:
    Angel investor
    [HNOI 2003]消防局的设立
    [USACO 08JAN]Telephone Lines
    [Luogu 2265]路边的水沟
    [NOI 2010]航空管制
    [HNOI 2004]敲砖块
    [Luogu 1730]最小密度路径
    [USACO 13NOV]No Change
    [POJ 1006]生理周期
    [AHOI 2012]树屋阶梯
  • 原文地址:https://www.cnblogs.com/huangdao/p/9495487.html
Copyright © 2011-2022 走看看