Trong hướng dẫn này, chúng ta sẽ thảo luận về chương trình tìm chi phí để cân bằng dấu ngoặc đơn.
Chúng ta sẽ được cung cấp một chuỗi dấu ngoặc. Nhiệm vụ của chúng ta là cân bằng các dấu ngoặc trong phương trình bằng cách dịch chuyển vị trí của chúng một đơn vị và in -1 nếu không thể cân bằng.
Ví dụ
#include <bits/stdc++.h>
using namespace std;
int costToBalance(string s) {
if (s.length() == 0)
cout << 0 << endl;
//lưu số lượng dấu ngoặc mở và đóng
int ans = 0;
int o = 0, c = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == '(')
o++;
if (s[i] == ')')
c++;
}
if (o != c)
return -1;
int a[s.size()];
if (s[0] == '(')
a[0] = 1;
else
a[0] = -1;
if (a[0] < 0)
ans += abs(a[0]);
for (int i = 1; i < s.length(); i++) {
if (s[i] == '(')
a[i] = a[i - 1] + 1;
else
a[i] = a[i - 1] - 1;
if (a[i] < 0)
ans += abs(a[i]);
}
return ans;
}
int main(){
string s;
s = ")))(((";
cout << costToBalance(s) << endl;
s = "))((";
cout << costToBalance(s) << endl;
return 0;
}
Kết quả
9 4