NYOJ 308 Substring

地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=308

题意大概就是找字符串s和它的逆序字符串的最长连续公共子序列

 1 #include<stdio.h>

 2 #include<string.h>

 3 int main()

 4 {

 5     int n,l,i,j,k;

 6     char a[55],b[55],c[55][55];

 7     scanf("%d",&n);

 8     while(n--)

 9     {

10         memset(c,0,sizeof(c));

11         getchar();

12         scanf("%s",a);

13         l=strlen(a);

14         for(i=0;i<l;i++)

15             b[i]=a[l-i-1];

16         int max=0;

17             for(i=1;i<=l;i++)

18                 for(j=1;j<=l;j++)

19                     if(a[i-1]==b[j-1])

20                     {

21                         c[i][j]=c[i-1][j-1]+1;//因为是连续的,所以当a[i-1]!=b[j-1]不用更新其它的值

22                         if(max<c[i][j])

23                         {

24                             max=c[i][j];

25                             k=i;

26                         }

27                     }

28           for(i=k-max;i<k;i++)

29               printf("%c",a[i]);

30           printf("\n");

31     }

32     return 0;

33 }

 

 

你可能感兴趣的:(substring)