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");
}
}