求助大佬,70分过不去
查看原帖
求助大佬,70分过不去
299711
单调欧文楼主2021/4/15 13:09
#include<iostream>
using namespace std;
const int N = 1e6 + 10;
string a;
char s[N];
int f[N],top; 
int ans,ansx;
int main(){
	cin >> a;
	for(int i = 0; i < a.size(); i++){
		if(a[i] == '(' || a[i] == '['){
			f[i] = max(f[i - 1],f[i]);
			s[++top] = a[i];
			continue;
		}
		if(a[i] == ')' && s[top] == '(' || a[i] == ']' && s[top] == '['){
			f[i] = max(f[i - 1] + 2,f[i]);
			if(ans < f[i]){
			ansx = i;
			ans = f[i];
		   }
			top--;
		}else {
			top = 0;
		}
	}
	for(int i = ansx - ans + 1; i <= ansx; i++){
		cout << a[i];
	}
	return 0;
}
2021/4/15 13:09
加载中...