pku 1226 Substrings

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAXN 102
#define MAXLEN 205

char in[MAXN][MAXLEN],tmp[MAXLEN],shot[MAXLEN];

inline bool solve(int n,char *pat)
{
    int i,j,t;
    for(i=1; i<n; i++)
    {
        if(!strstr(in[i],pat))
        {
            t=strlen(in[i]);
            j=0;
            t--;
            while(t>=0) tmp[j++]=in[i][t--];
            tmp[j]=0;
        //    printf("tmp=%s\n",tmp);
            if(!strstr(tmp,pat)) return false;
        }
    }
    return true;
}

int main()
{
    int T,n,i,j,k,g,len,ans;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        scanf("%s",in[0]);
        if(n==1)
        {
            printf("%d\n",strlen(in[0]));
            continue;
        }
        len=strlen(in[0]);
        ans=0;
        for(i=1; i<n; i++) scanf("%s",in[i]);

        for(i=0; i<len; i++)
        {
            for(j=i; j<len; j++)
            {
                g=0;
                for(k=i; k<=j; k++)
                {
                    shot[g++]=in[0][k];
                }
                shot[g]=0;
                //   printf("%s\n",shot);system("pause");
                if( solve(n,shot) && g>ans )
                    ans=g;
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

posted @ 2010-08-28 22:40  菜到不得鸟  阅读(156)  评论(0)    收藏  举报