ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อหาต้นทุนเพื่อทำให้วงเล็บสมดุล
สำหรับสิ่งนี้เราจะได้รับลำดับของวงเล็บ งานของเราคือทำให้วงเล็บเหล่านั้นสมดุลในสมการโดยเลื่อนตำแหน่งทีละหนึ่งและพิมพ์ -1 หากไม่สามารถปรับสมดุลได้
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int costToBalance(string s) { if (s.length() == 0) cout << 0 << endl; //storing count of opening and //closing parentheses 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; }
ผลลัพธ์
9 4