

Bessie là cô bò đang cố gắng gõ một chuỗi ngoặc đơn cân bằng vào máy tính xách
tay của cô ta, nhưng cô ta rất vụng về (do móng guốc khá lớn) nên cô ta hay gõ mất các
kí tự. Hãy giúp cô ta tính xem có bao nhiêu kí tự trong chuỗi ngoặc đơn cần phải được đổi
chiều (có nghĩa là đổi dấu mở ngoặc đơn thành dấu đóng ngoặc đơn, và ngược lại) để
chuỗi ban đầu thành chuỗi cân bằng.
Có nhiều cách để định nghĩa một chuỗi ngoặc là “cân bằng.” Cách dễ nhất là số
lượng dấu mở ngoặc ‘(‘ bằng số lượng dấu đóng ngoặc ‘)’, và với bất kì chuỗi tiền tố nào,
số lượng dấu mở ngoặc đơn ‘(‘ phải lớn hơn hoặc bằng số lượng dấu đóng ngoặc đơn ‘)’.
Trong những ví dụ sau đây, những chuỗi ở bên dưới là chuỗi cân bằng:
()
(())
()(()())
Những chuỗi sau đây là chuỗi không cân bằng:
)(
())(
((())))
INPUT: CLUMSY.INP
• Một chuỗi dấu ngoặc đơn có độ dài tối đa là 100.000 kí tự.
OUTPUT: CLUMSY.OUT
• Một số tự nhiên duy nhất là số lượng dấu ngoặc đơn nhỏ nhất cần phải được đổi
chiều để biến chuỗi ban đầu thành chuỗi cân bằng
sử dụng code C++
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
// author: cody
#include <bits/stdc++.h>
using namespace std;
int main()
{
string ss;
cin >> ss;
int cnt = 0;
int ans = 0;
for (char c : ss)
{
if (c == ')')
{
if (cnt < 1)
cnt = 1, ans += 1;
else
cnt -= 1;
}
else
{
cnt += 1;
}
}
cout << ans + (cnt / 2);
}
Hãy giúp mọi người biết câu trả lời này thế nào?

#danglam228
#include <bits/stdc++.h>
using namespace std;
string st;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
freopen("CLUMSY.INP", "r", stdin);
freopen("CLUMSY.OUT", "w", stdout);
cin >> st;
int d1 = 0,d2 = 0,d3 = 0;
for (char c : st) {
if (c == '(') {
d1++;
} else if (c == ')') {
if (d1 > 0) {
d1--;
} else {
d2++;
}
}
}
d3 = (d1 + 1) / 2 + (d2 + 1) / 2;
cout << d3 << endl;
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?

Bảng tin
2
118
2
sai roi