123456fish @ 2024-11-24 12:54:28
悲,题目
我们定义以下的括号是平衡的:
() (()) ()(()())
而这样的括号是不平衡的:
)( ())( ((())))
给出一个偶数长度的括号序列,问最少修改多少个括号可以使其平衡。
输入一个字符串,长度至多
你的程序需要输出答案,最少需要添加多少括号才能保持平衡。
())(
2
#include "bits/stdc++.h"
using namespace std;
int m(const string &s) {
stack<char> stk;
int a = 0;
for (char c : s) {
if (c == '(') {
stk.push(c);
} else if (c == ')') {
if (stk.empty()) {
a++;
} else {
stk.pop();
}
}
}
return a + stk.size();
}
int main() {
string s;
cin >> s;
cout << m(s) << endl;
return 0;
}
by zengziqvan @ 2024-11-24 15:15:37
平衡是啥意思
by zengziqvan @ 2024-11-24 15:16:32
不是哥,上面修改下面添加,把题面说明白点。
by zengziqvan @ 2024-11-24 15:17:03
@123456fish
by 123456fish @ 2024-11-24 15:20:49
by zengziqvan @ 2024-11-24 15:21:48
……
by 123456fish @ 2024-11-24 15:24:13
.......
by akaryan @ 2024-11-26 12:06:50
#include<bits/stdc++.h>
using namespace std;
int ans = 0 , cnt = 0;
string s;
stack<int>st;
int main(){
cin >> s;
for (int i = 0 ; i < s.length() ; i ++){
if (s[i] == '(')
st.push(s[i]);
else if (st.size() < 1)
st.push('(') , ans ++;
else
st.pop();
}
cnt = ans + st.size() / 2;
cout << cnt << endl;
return 0;
}