nyoj 308 Substring

来源:互联网 发布:天下太极线指标源码 编辑:程序博客网 时间:2024/04/28 12:38

Substring

时间限制:1000 ms  |           内存限制:65535 KB
难度:1
描述

You are given a string input. You are to find the longest substring of input such that the reversal of the substring is also a substring of input. In case of a tie, return the string that occurs earliest in input.

Note well: The substring and its reversal may overlap partially or completely. The entire original string is itself a valid substring . The best we can do is find a one character substring, so we implement the tie-breaker rule of taking the earliest one first.

输入
The first line of input gives a single integer, 1 ≤ N ≤ 10,  the number of test cases. Then follow, for each test case,  a  line  containing between 1 and 50 characters, inclusive. Each character of input will be an uppercase letter ('A'-'Z').
输出
Output for each test case  the longest substring of input such that the reversal of the substring is also a substring of input
样例输入
3                   ABCABAXYZXCVCX
样例输出
ABAXXCVCX
求字符串中最大的子串(反转后同样能在字符串中找到)暴力!!!
#include<stdio.h>#include<string.h>#include<algorithm>#define max 10000+100using namespace std;struct record{    char s[60];}num[max];char str[60],str1[60];bool cmp(record a,record b){    return strlen(a.s)>strlen(b.s);}int main(){    int t,i,j,l,k,p,q;    scanf("%d",&t);    while(t--)    {        scanf("%s",str);        l=strlen(str);        q=0;        for(i=0;i<l;i++)//开头         {            for(j=i;j<l;j++)//结尾             {                memset(str1,'\0',sizeof(str1));                for(p=j,k=0;p>=i;p--)                str1[k++]=str[p];                if(strstr(str,str1))//找到                 {                    strcpy(num[q++].s,str1);//复制                 }            }        }        sort(num,num+q,cmp);         printf("%s\n",num[0].s);    }    return 0;}

0 0