1 //就是字符串和它的逆串最大连续公共字串
2
3 #include<stdio.h>
4 #include<string.h>
5 #include<stdlib.h>
6 char a[100];
7 char b[100];
8 int c[100][100];
9
10 int main()
11 {
12 int n,i,j,k,t,p;
13 scanf("%d",&n);
14 while(n--)
15 {
16 scanf("%s",a);
17 t=strlen(a);
18 for(i=0;i<t;i++)
19 b[t-1-i]=a[i];
20 b[t]='\0';
21 // strcpy(b,a);
22 // strrev(b);
23 p=0;
24 memset(c,0,sizeof(c));
25 for(i=1;i<=t;i++)
26 for(j=1;j<=t;j++)
27 {
28 if(a[i-1]==b[j-1])
29 c[i][j]=c[i-1][j-1]+1;//因为是连续的,所以当a[i-1]!=b[j-1]不用更新其它的值
30 // else
31 // c[i][j]=c[i-1][j]>c[i][j-1]?c[i-1][j]:c[i][j-1];
32 if(p<c[i][j])
33 {
34 p=c[i][j];
35 k=i;
36 }
37 }
38 for(i=k-p;i<k;i++)
39 printf("%c",a[i]);
40 printf("\n");
41 }
42 return 0;
43 }