求助,关于如何读入换行符且退出
查看原帖
求助,关于如何读入换行符且退出
446327
mukari楼主2021/7/28 21:38

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;
}
2021/7/28 21:38
加载中...