56分求教
查看原帖
56分求教
1030436
chjiyu123456789楼主2024/9/22 11:06
#include<bits/stdc++.h>
using namespace std;
stack<char>z;
int a[10005],d[10005];
int main(){
	string s;
	int sum=0,maxn=0;
	cin>>s;
	for(int i=0;i<s.size();i++){
		if(s[i]=='('||s[i]=='['||s[i]=='{'){
			z.push(s[i]);
		}
		else if(s[i]==')'){
			if(z.top()=='('){
				z.pop();
				sum++;
			}
			else{
				z.push(s[i]);
				a[i]=sum;
				sum=0;
			}
		}
		else if(s[i]=='}'){
			if(z.top()=='{'){
				z.pop();
				sum++;
			}
			else{
				z.push(s[i]);
				a[i]=sum;
				sum=0;
			}
		}
		else{
			if(z.top()=='['){
				z.pop();
				sum++;
			}
			else{
				z.push(s[i]);
				a[i]=sum*2;
				sum=0;
			}
		}
	} 
	a[s.size()-1]=sum*2;
	for(int i=0;i<s.size();i++){
		if(i-a[i]+1>=0)d[i]=a[i]+a[i-a[i]+1];
		maxn=max(maxn,d[i]);
	}
	cout<<maxn;
	return 0;
} 
2024/9/22 11:06
加载中...