标签:
这题绝对是被坑的滴血,我真想对网上某某人说,去你大爷的。
这题的思路挺简单,本来我以为要用的什么高深的算法,可是听别人说,直接暴力就可以解决,于是就做了。本来很快写好代码,可是语句代码坑了我好长好长时间。
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<stack> #include<queue> using namespace std; char dna[11][65]; char ans[65]; int m; void cpy(char *s1,char *s2,int id,int len) { int a=id+len,top=0; for(int i=0;i<65;i++)//就这里,把我坑的苦不堪言,一开始我听别人说可以memset(s2,0,sizeof(s2))来初始化,
//可是后面就出事了,查错误,查了老半天。 s2[i]='\0'; for(int i=id;i<a;i++) s2[top++]=s1[i]; } void solve() { char temp[65]="Z"; for(int i=3;i<=60;i++) { int len=60-i; for(int j=0;j<=len;j++) { cpy(dna[0],ans,j,i); bool isok=false; for(int k=1;k<m;k++) { if(strstr(dna[k],ans)==NULL) { isok=true; break; } } if(isok) continue; //printf("1 ans=%s\n",ans); int len1=strlen(temp); int len2=strlen(ans); if(len1<len2) strcpy(temp,ans); else if((len1==len2)&&strcmp(temp,ans)>0) strcpy(temp,ans); //printf("temp=%s\n",temp); } } if(temp[0]!='Z') printf("%s\n",temp); else printf("no significant commonalities\n"); } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d",&m); memset(dna,0,sizeof(dna)); for(int i=0;i<m;i++) scanf("%s",dna[i]); solve(); } return 0; }
标签:
原文地址:http://blog.csdn.net/u013621213/article/details/43374039