RT,第三个测试点过不去,想用while读入,但退出不了。用cin或gets等读不了换行符。求dalao帮助 代码如下:
#include<bits/stdc++.h>
using namespace std;
string a;
string x;
char b[20005];
int s[20005];
bool p[20005][20005];
int maxn=-114514;
int begin;
int m=0;
int main()
{
while(getline(cin,x)) a+=x;
int lena=a.length();
for(int i=0;i<lena;i++){
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')){
b[m]=a[i];
s[m]=i;
m++;
}
}
int lenb=strlen(b);
for(int i=0;i<lenb;i++){
p[i][i]=1;
if(a[i]==a[i+1]||a[i]==a[i+1]+32||a[i]==a[i]-32){
p[i][i+1]=1;
}
}
for(int l=2;l<=lenb;l++){
for(int j=1;j<=lenb;j++){
int e=l+j-1;
if(p[j+1][e-1]==1&&(b[j]==b[e]||b[j]==b[e]+32||b[j]==b[e]-32)){
p[j][e]=1;
if(p[j][e]==1){
if((e-j+1)>maxn){
maxn=e-j+1;
begin=j;
}
}
}
}
}
cout<<maxn<<endl;
for(int i=s[begin];i<=s[begin+maxn-1];i++){
cout<<a[i];
}
return 0;
}