Помогите решить задачку.. не въеду никак..
Если мы из корректно записанного арифметического выражения, содержащего числа, знаки операций и открывающие и закрывающие круглые скобки выбросим числа и знаки операций, а затем запишем оставшиеся в выражении скобки без пробелов между ними, то полученный результат назовем правильным скобочным выражением [скобочное выражение "(()(()))" - правильное, а "()(" и "())(" - нет].
Найти число правильных скобочных выражений, содержащих 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} |
берешь строку и делаешь по ней цикл + создаешь 4 переменные:
1) числовая переменная. в ней будет храниться кол-во открывающих скобок; 2) числовая переменная. в ней будет храниться кол-во закрывающих скобок; 3) числовая переменная. в ней будет храниться разность между открывающимися и закрывающимися скобками, по умолчанию равно 0. т.е если скобка открывающаяся, то значение этой переменной увеличиваем на 1, если закрывающая то уменьшаем на 1. 4) булева переменная, в которой будет храниться результат на верность выражения, по умолчанию true. каждый раз когда скобка закрывается, необходимо проверять (3) переменную на отрительное значение, если оно отрицательное, то выражение неверное. и переменную присваиваем значение false делаем цикл по строке, если символ равен "(" или ")" то увеличиваем (1) или (2) переменную на 1. и увеличиваем или уменьшаем (3) переменную в зависимости от скобки. также в конце надо проверить (3) переменную - если она равна нулю - то выражение верное, иначе нет. удачи) |
Часовой пояс GMT +3, время: 22:53. |