Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ต้นทุนในการปรับสมดุลวงเล็บใน C++


ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อหาต้นทุนเพื่อทำให้วงเล็บสมดุล

สำหรับสิ่งนี้เราจะได้รับลำดับของวงเล็บ งานของเราคือทำให้วงเล็บเหล่านั้นสมดุลในสมการโดยเลื่อนตำแหน่งทีละหนึ่งและพิมพ์ -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