CSU 国防科大决赛 A题 P-P String
题意: 在字符串中找len最大的P-P String,而P-P String的定义是找到三个部分S1 S2 S3,S1+S2为回文 S2+S3为回文,有一个条件是三部分相同,即S1 = S3 && S2反转S3(这个是推时间紧就没这么复杂了,自己是直接暴力模拟的),没有别的就是比较。
#include"iostream"
#include"cstring"
#include"cstdio"
using namespace std;
char s[210];
int a[201];
int i,j,x,y;
int flag_(int x,int y){
for(;y-x>0;x++,y--){
if(s[x]!=s[y]){
return 0;
}
}
return 1;
}
int main(){
int t,len,res,flag,cur,maa;
cin>>t;
while(t--){
cin>>s;
len = strlen(s);
maa = cur = 0;
for(i=2; i<len; i++){//2-len-1 (3th)
for(j=1; j<=(i+1)/3; j++){//个数
if(flag_(i-2*j+1,i) && flag_(i-3*j+1,i-j)){//子串俩相同
cur = j;
}
// cout<<flag_(i-2*j+1,i)<<" "<<flag_(i-3*j+1,i-j)<<" "<<cur<<endl;
}
// ma = j;
maa = maa>cur?maa:cur;
}
cout<<maa*3<<endl;
}
return 0;
}