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