poj 3080 (暴力 strstr)

 1 strstr(a,b);
2 返回b串在a串中出现的第一个位置,否则返回NULL
3
4
5 #include<string.h>
6 #include<stdio.h>
7 const int N=100;
8 int m;
9 char dna[N][N];
10 int search(char s[],int len)
11 {
12 int i;
13 for(i=1;i<m;i++)
14 {
15 if(!strstr(dna[i],s))return 0;
16 }
17 return 1;
18 }
19 int main()
20 {
21 int t,i,j,sum,max,k;
22 char ans[N],s[N];
23 scanf("%d",&t);
24 while(t--)
25 {
26 max=-1;
27 scanf("%d",&m);
28 getchar();
29 for(i=0;i<m;i++)
30 gets(dna[i]);
31 int len=strlen(dna[0]);
32 for(i=0;i<len;i++){
33
34 for(j=i;j<len;j++){
35 sum=0;
36 for(k=i;k<=j;k++){
37
38 s[sum++]=dna[0][k];
39
40 }
41 s[sum]='\0';
42 if(search(s,sum)){
43 if(sum>max){
44 max=sum;
45 strcpy(ans,s);
46 }
47 else
48 {
49 if(max==sum&&strcmp(ans,s)>0)
50 {
51 strcpy(ans,s);
52 }
53 }
54
55
56 }
57
58
59 }
60 }
61
62 if(max>=3)puts(ans);
63 else puts("no significant commonalities");
64 }
65 }
原文地址:https://www.cnblogs.com/acSzz/p/2398638.html