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;
}