P7938 [A] Beautiful Array 题解

思路

模拟。

考虑计算字符串中匹配括号的个数。因为每一个匹配括号组一定对应了一个()的子序列,而我们需要使得匹配的括号子序列最多,所以匹配括号的个数一定等于匹配括号子序列的最多个数。

先求一下匹配括号的个数,看看是不是 \(\geqslant m\) 即可。

代码

非常好写。

void solve(){
	cin>>n>>m;
	cin>>s;
	while(!st.empty()){
		st.pop();//清栈很重要
	}
	int cnt=0;
	for(int i=0;i<s.length();i++){//计算匹配括号的数量
		if(!st.empty()&&st.top()=='('&&s[i]==')'){
			st.pop();
			cnt++;
			continue;
		}
		st.push(s[i]);
	}
	if(cnt>=m){//判断
		puts("1");
	}
	else{
		puts("0");
	}
}
posted @ 2022-01-26 16:44  Shunpower  阅读(29)  评论(0编辑  收藏  举报