POJ 3080 Blue Jeans(暴力)

来源:互联网 发布:怀孕37周b超标准数据 编辑:程序博客网 时间:2024/06/05 21:06

求出m个串中大于三的最长的公共子串。

范围比较小,暴力就能过。

长度枚举从3开始至60。如果能找出一个公共串就记录,最后记录的一定是最大的。

#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<cctype>#include<iostream>#include<cmath>#include<set>using namespace std;char str[11][80],ans[80],x[80];int n;int pd(){    for(int i=1;i<n;i++)    {        if(strstr(str[i],ans)==NULL)            return 0;    }    return 1;}int main(){    int t;    cin>>t;    while(t--)    {        memset(str,0,sizeof(str));        memset(ans,0,sizeof(ans));        memset(x,0,sizeof(x));        cin>>n;        for(int i=0;i<n;i++)            scanf(" %s",str[i]);        int k=3,flag=0;        while(k<=60)        {            memset(ans,0,sizeof(ans));            for(int i=0;i<=60-k;i++)            {                for(int j=0;j<k;j++)                    ans[j]=str[0][i+j];                ans[k]='\0';                if(pd())                {                    flag=1;                    memcpy(x,ans,sizeof(ans));                }            }            k++;        }        if(flag)            puts(x);        else            printf("no significant commonalities\n");    }    return 0;}


0 0