Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите решить задачку.. не въеду никак.. (https://javascript.ru/forum/misc/48811-pomogite-reshit-zadachku-ne-vedu-nikak.html)

staseward 17.07.2014 19:03

Помогите решить задачку.. не въеду никак..
 
Если мы из корректно записанного арифметического выражения, содержащего числа, знаки операций и открывающие и закрывающие круглые скобки выбросим числа и знаки операций, а затем запишем оставшиеся в выражении скобки без пробелов между ними, то полученный результат назовем правильным скобочным выражением [скобочное выражение "(()(()))" - правильное, а "()(" и "())(" - нет].
Найти число правильных скобочных выражений, содержащих N открывающихся и N закрывающихся скобок. N вводится с клавиатуры. N неотрицательное целое число.

Пример:
N = 1 (по одной скобке открывающейся и закрывающеся) - ответ 1
()
)(
))
((
Только один правильный вариант

Для введенного числа 2 - 2 :
()()
(())
То есть только два варианта, когда все открытые скобки правильно открываются/закрываются.
И так далее.


И вот еще одна...
Find the sum of the digits in the number 100! (i.e. 100 factorial)
{Correct answer: 648}

skrudjmakdak 17.07.2014 21:31

берешь строку и делаешь по ней цикл + создаешь 4 переменные:
1) числовая переменная. в ней будет храниться кол-во открывающих скобок;
2) числовая переменная. в ней будет храниться кол-во закрывающих скобок;
3) числовая переменная. в ней будет храниться разность между открывающимися и закрывающимися скобками, по умолчанию равно 0. т.е если скобка открывающаяся, то значение этой переменной увеличиваем на 1, если закрывающая то уменьшаем на 1.
4) булева переменная, в которой будет храниться результат на верность выражения, по умолчанию true. каждый раз когда скобка закрывается, необходимо проверять (3) переменную на отрительное значение, если оно отрицательное, то выражение неверное. и переменную присваиваем значение false

делаем цикл по строке, если символ равен "(" или ")" то увеличиваем (1) или (2) переменную на 1. и увеличиваем или уменьшаем (3) переменную в зависимости от скобки. также в конце надо проверить (3) переменную - если она равна нулю - то выражение верное, иначе нет.

удачи)


Часовой пояс GMT +3, время: 22:53.