样例都没过,还输出了奇奇怪怪的字符
查看原帖
样例都没过,还输出了奇奇怪怪的字符
865793
better_Z楼主2024/5/24 17:20
#include<iostream>
#include<cstring>
#define maxn 1000010
using namespace std;
char s[maxn];
int f[maxn],mxans=-9999,t,flag;
int main(){
    memset(f,0,sizeof(f));
    while(cin>>s[++t]);
    t--;
    for(int i=1;i<=t;i++){
        if(s[i]==')'||s[i]==']'){
            if((s[i-1]==s[i]-1)||(s[i-1]==s[i]-2)){
                f[i]=2;
                if(f[i]>mxans){
                        mxans=f[i];
                        flag=i;
                    }
            }
            else if(s[i-1]==')'||s[i-1]==']'){
                if(s[i-f[i-1]-1]==s[i]){
                    f[i]=f[i-1]+2;
                    if(f[i]>mxans){
                        mxans=f[i];
                        flag=i;
                    }
                }
            }
        }
    }
    for(int i=flag-mxans;i<=flag;i++)cout<<s[i];
    return 0;
}
2024/5/24 17:20
加载中...