HDU 1238

http://acm.hdu.edu.cn/showproblem.php?pid=1238

字符匹配  先贴个代码

 

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
char s[102];
int len;
}a[102];

int cmp(const void*a,const void*b)
{
return (*(node*)a).len>(*(node*)b).len?1:-1;
}
int main()
{
int CASE,N,i,beg,lon,k,h;
bool flag;
char mark[102],rev[102];
scanf("%d",&CASE);
while(CASE--)
{
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%s",a[i].s);
a[i].len=strlen(a[i].s);
}

qsort(a,N,sizeof(a[0]),cmp);
for(lon=a[0].len;lon>0;lon--)
{
for(beg=0;beg+lon<=a[0].len;beg++)
{ flag=1;//!!!
memset(mark,0,sizeof(mark));//不可以少的
memset(rev,0,sizeof(rev));//不可以少的
for(i=beg,k=0;i<beg+lon;i++)
{
mark[k]=a[0].s[i];
k++;
}
k--;
//cout<<"k="<<k<<endl;
for(i=0;i<=k;i++)
{
rev[i]=mark[k-i];
}
//cout<<mark<<" l "<<" rev "<<rev<<endl;

for(h=1;h<N;h++)
{
if((strstr(a[h].s,mark)==NULL)&&(strstr(a[h].s,rev)==NULL))
{
flag=0;
break;
}


}
if(flag==1)break;
}
if(flag==1)break;
}

printf("%d\n",lon);

}
return 0;

}



posted @ 2011-11-25 22:16  快乐.  阅读(322)  评论(0编辑  收藏  举报