Професионална програма
Loading...
Andyzl avatar Andyzl 17 Точки

EXERCISE - STACKS AND QUEUES , задача 7 Balanced Parentheses

Здравейте!
Имам нужда от насоки къде мога да съм объркал задача 7 от домашното. 
Моят код 87/100.  - https://pastebin.com/fmyvPG4L

Предполагам, че съм прекалил с проверките, но въпреки всичко последният тест не минава.
Благодаря предварително!

Тагове:
0
C++ Advanced
MartinBG avatar MartinBG 3894 Точки
Best Answer

В условието на задачата не е указано че има йерархична зависимост между типовете скоби, т.е. следният израз се приема за валиден:

([{}])

Премахнете проверките за типа на вложените скоби и решението би следвало да мине.

0
Andyzl avatar Andyzl 17 Точки

Благодаря! Получи се .

1
sninov avatar sninov 3 Точки

Здравей колега. И на мен не ми минава последният тест. Какво промени за да ти излезе, т.к. не е йерархичната зависимост между скобите?

Eто го и моя вариант: https://pastebin.com/VH23a3fQ

Тези считат ли се за балансирани скоби: {()()} ,   ()()()()() , ]})({[ ,  защото когато позволих в първата половина да има и затварящи скоби, покрих тест 4.

0
31/05/2021 19:20:55
DimovIvan avatar DimovIvan 11 Точки

Привет, колеги! До колкото разбирам условието, трябва първата половина на поредицата да е огледална на втората за да е балансирана. Използвах логиката на колегата sninov да реша задачата, но в printSolution функцията ми оплесквам нещата. По принцип, трудно се оправям с булевите функции.

https://pastebin.com/dsK7ynbG

0
sninov avatar sninov 3 Точки

Трябва първата половина да е queue, а втората половина stack - обърнал си ги. Но след като доста време се мъчих с последния тест, почвам да си мисля, че не е задължително двете половини да са симетрични и май трябва да мисля за друг подход.

0
31/05/2021 23:29:50
MartinBG avatar MartinBG 3894 Точки

Изразите може да не са симетрични и пак да са валидни, например:

()[]

0
DimovIvan avatar DimovIvan 11 Точки

Няма значение коя  половина от израза ще е queue и коя stack. В единия случай сравняваме двете половини от вън на вътре, в другия - от вътре на вън.  Но от примерите, които дава Мартин, става ясно, че не сме разбрали условието.

1
sninov avatar sninov 3 Точки

Смених подхода: https://pastebin.com/WiRyaLeT

Сега пък ми бяга тест 2 :)

Пробвах и решението на колегата Andyzl , без проверките за йерархията на скобите - пак не излиза тест 2, нещо ми се губи, но не разбирам какво.

0
01/06/2021 10:09:11