文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>hdu 1238 Substrings(字符串查找问题 c语言版 0ms)

hdu 1238 Substrings(字符串查找问题 c语言版 0ms)

时间:2011-04-16  来源:银志圆

/*
搜索入门题
对字符串按长度进行排序
然后对最短的字符串枚举所有的子串
用到了 求反串 求子串 字符串查找
*/
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
typedef
struct
{
char str[120];
}In;
In s[
120];
int cmp ( const void *a , const void *b )
{
return strlen((*(In*)a).str)-strlen((*(In *)b).str);
}
int t,n;
void print()
{
int i;
for(i=0;i<n;i++)
printf(
"%s\n",s[i].str);
}
int process(In a)
{
int len=strlen(a.str);
char tmp[150];
char rtmp[150];
int i,j,k,q,p;
for(i=len;i>=1;i--)
{
memset(tmp,
0,sizeof(tmp));
memset(rtmp,
0,sizeof(rtmp));
for(j=0;j+i<=len;j++)
{
memcpy(tmp,a.str
+j,i);
for(k=i-1,p=0;k>=0;k--,p++)
{
rtmp[p]
=tmp[k];
}
int ok=1;
for(q=1;q<n;q++)
{
if(strstr(s[q].str,tmp)!=NULL)
continue;
if(strstr(s[q].str,rtmp)!=NULL)
continue;
ok
=0;
break;
}
if(ok)return strlen(tmp);
}
}
return 0;
}
int main()
{
scanf(
"%d",&t);
while(t--)
{
scanf(
"%d",&n);
int i;
for(i=0;i<n;i++)
{
scanf(
"%s",&s[i].str);
}
qsort((
void*)s,n,sizeof(s[0]),cmp);
int ans=process(s[0]);
printf(
"%d\n",ans);
}
return 0;
}

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载