POJ 3080 Blue Jeans

POJ_3080

这个题目直接暴力枚举就可以过了。

一开始只看了Sample就开始做题了,结果忽视了输出的碱基至少要有3个这个条件。以后无论什么样的题目都要仔细审题!

#include<stdio.h>
#include
<string.h>
char b[15][70];
char ans[70],temp[70];
int main()
{
int i,j,k,n,t,p,q,r,s,len,match,find,ok;
scanf(
"%d",&t);
while(t--)
{
scanf(
"%d",&n);
for(i=0;i<n;i++)
scanf(
"%s",b[i]);
memset(ans,
'\0',sizeof(ans));
memset(temp,
'\0',sizeof(temp));
for(len=2;len<60;len++)
for(i=0,j=i+len;j<60;i++,j++)
{
ok
=1;
for(k=1;k<n;k++)
{
find
=0;
for(p=0,q=p+len;q<60;p++,q++)
{
match
=1;
for(r=i,s=p;r<=j;r++,s++)
if(b[0][r]!=b[k][s])
{
match
=0;
break;
}
if(match)
{
find
=1;
break;
}
}
if(!find)
{
ok
=0;
break;
}
}
if(ok)
{
for(p=i,q=0;p<=j;p++,q++)
temp[q]
=b[0][p];
if(strlen(ans)<strlen(temp))
strcpy(ans,temp);
else if(strlen(ans)==strlen(temp)&&strcmp(ans,temp)>0)
strcpy(ans,temp);
}
}
if(strlen(ans)<3)
printf(
"no significant commonalities\n");
else printf("%s\n",ans);
}
return 0;
}

  

原文地址:https://www.cnblogs.com/staginner/p/2153931.html