POJ 1226 Substrings(strstr)

来源:互联网 发布:花生壳教学软件 编辑:程序博客网 时间:2024/05/17 23:29

题目链接:http://poj.org/problem?id=1226

如果真做的话用后缀数组还是费点事的,不过题目数据量不大,直接枚举+strstr水过!

#include <string.h>#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>using namespace std;#define maxn 1000char str[500][maxn],tem[maxn],tem1[maxn],tem2[maxn];int n;int rev(char *name,int len){    int l=0;    len--;    while(l<len){        name[l]^=name[len];        name[len]^=name[l];        name[l]^=name[len];        l++,len--;    }    return 0;}int main(){    int i,j,k,t,len,ans;    char ch;    scanf("%d",&t);    while(t--){        scanf("%d",&n);        k=maxn;j=0;        for(i=0;i<n;i++){            scanf("%s",str[i]);            len=strlen(str[i]);            if(len<k) k=len,j=i;        }        strcpy(tem,str[j]);        len=strlen(tem);        ans=0;        for(i=0;i<len;i++)        for(j=i+1;j<=len;j++){            if(j-i<=ans) continue;            ch=tem[j];tem[j]=0;            strcpy(tem1,tem+i);            tem[j]=ch;            strcpy(tem2,tem1);            rev(tem2,j-i);            for(k=0;k<n;k++){                if(strstr(str[k],tem1) || strstr(str[k],tem2))                continue;                break;            }            if(k==n) ans=j-i;        }        printf("%d\n",ans);    }    return 0;}


原创粉丝点击