Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Vesolini avatar Vesolini 7 Точки

06. Balanced Brackets

Здравейте банда! Може ли някой да ми помогне да разбера къде греша. Judge ми дава 85/100

https://pastebin.com/CckYHSD3

 

6.   Balanced Brackets

You will receive n lines. On those lines, you will receive one of the following:

  • Opening bracket – “(“,
  • Closing bracket – “)” or
  • Random string

Your task is to find out if the brackets are balanced. That means after every closing bracket should follow an opening one. Nested parentheses are not valid, and if two consecutive opening brackets exist, the expression should be marked as unbalanced.

Input

  • On the first line, you will receive n – the number of lines, which will follow
  • On the next n lines, you will receive “(”, “)” or another string

Output

You have to print “BALANCED”, if the parentheses are balanced and “UNBALANCED” otherwise.

Constraints

  • n will be in the interval [1…20]
  • The length of the stings will be between [1…100] characters

Examples

Input

Output

 

Input

Output

8

(

5 + 10

)

* 2 +

(

5

)

-12

BALANCED

 

6

12 *

)

10 + 2 -

(

5 + 10

)

 

 

UNBALANCED

Тагове:
1
Module: C# Advanced
DeeDee.ag avatar DeeDee.ag 6 Точки

Оставям тук едно по-различно решение - с регекс.

0
vvsvvs avatar vvsvvs 4 Точки

Ето разшифровано условието на задачата

Комбинации хх(xx; xx(xx(xx; xx)xx; xx(xx)xx)xx са UNBALANCED - отваряща скоба без затваряща, две последователни отварящи скоби, първа появила се скоба е затваряща, две последователни затварящи скоби. Да се обърне внимание на ситуацията - първа отваряща скоба без изобщо да има други скоби - UNBALANCED 

с x е заместен всеки символ различен от '('  или ')', както и отсъствие на символ - "(xx" и "xx(xx" е едно и също

 

Ето две решения: https://pastebin.com/Jht7wJMs

https://pastebin.com/paPLAgb6

Второто брои появяванията на каквато и да е скоба. Ако скобата е отваряща се проверява дали брояча на появявания е нечетно число - ако е четно, значи отварящата скоба не си е на мястото и съответно UNBALANCED. Аналогично за затваряща скоба - тя трябва винаги да е на четна позиция. Остава случая котаго има отваряща скоба на нечетна позиция, но няма затваряща след нея - това го следя с една булева променлива. Променливата получава true при отваряща скоба и false при затваряща. Ако след края на цикъла тя е true значи UNBALANCED.    

 

 

 

0
04/05/2021 14:25:12
Acidlord avatar Acidlord 3 Точки

100/100 в Judge C#

(Ако първата скоба е ")" - греда)

(Ако има 2 последователни еднакви скоби - греда)

(За изход: ако броят на "(" == ")"  - ок)

(                ako броят на "(" != ")" - греда)

 

 

int lines = int.Parse(Console.ReadLine());
int openingBraket = 0;
int closingBraket = 0;

for (int i = 1; i <= lines; i++)
{
    string input = Console.ReadLine();

    if (input == ")" && openingBraket == 0) 
    {
        closingBraket++;
        break;
    }
    else if (input == "(")
    {
        openingBraket++;
        if (openingBraket == 2)
        { 
            break;
        }
    }
    else if (input == ")")
    {
        closingBraket++;
        if (closingBraket == 2) 
        {
            break;
        }
    }

    if (openingBraket == 1 && closingBraket == 1) 
    {
        openingBraket = 0; 
        closingBraket = 0;
    }
}

if (openingBraket != closingBraket)
{
    Console.WriteLine("UNBALANCED");
}
else

    Console.WriteLine("BALANCED");
}

0
10/09/2023 16:15:29
nikoleta.panayotova avatar nikoleta.panayotova 2 Точки

Ето и моето решение:

int lines = int.Parse(Console.ReadLine());

int openingBrackets = 0;
int closingBrackets = 0;

bool isBalanced = true;

while (lines > 0)
{
    string input = Console.ReadLine();

    if (input == ")")
    {
        closingBrackets++;
        if (closingBrackets > openingBrackets)
        {
            isBalanced = false;
            break;
        }
    }
    else if (input == "(")
    {
        openingBrackets++;
        if (openingBrackets > closingBrackets + 1)
        {
            isBalanced = false;
            break;
        }
    }

    if (openingBrackets == closingBrackets)
        isBalanced = true;
    else 
        isBalanced = false;

    lines--;
}

Console.WriteLine(isBalanced ? "BALANCED" : "UNBALANCED");

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.