P1944求救
查看原帖
P1944求救
232205
little_kongbai楼主2021/7/15 14:39

思路就是以栈为基本思想,统计括号能不能匹配的上

但是1TLE 6WA了

求救!

	#include<bits/stdc++.h>
	using namespace std;
	int tot_s,tot_m,dq,ans,leng,max_id;string s;
	int find(int n){
		tot_s=tot_m=0;
		for(int i=n;i<leng;i++){
			switch (s[i]){
				case '(':
					++tot_s;
					break;
				case '[':
					++tot_m;
					break;
				case ')':
					if(tot_s)--tot_s;
					else if(tot_m)return 0;
					else return i-n;
					break;
				case ']':
					if(tot_m)--tot_m;
					else if(tot_s)return 0;
					else return i-n;
					break;
			}
		}
		if(tot_s||tot_m)return 0;
		else return leng-n;
	}
	int main(){
		cin>>s;
		leng=s.size();
		for(int i=0;i<leng;i++){
			int ls=find(i);
			if(ls>ans){
				ans=ls;
				max_id=i;
			}
		}
		for(int i=max_id;i<max_id+ans;i++){
			cout<<s[i]; 
		}
		return 0;
	} 
2021/7/15 14:39
加载中...