Форум программистов, компьютерный форум CyberForum.ru

Правильное арифметическое выражение со скобками - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Динамические массивы с подряд идущими элементами в памяти http://www.cyberforum.ru/cpp-beginners/thread1837162.html
Здравствуйте. Помогите разобраться, пожалуйста, с динамическими двумерными массивами. Если я объявлю двумерный массив следующим образом, то у меня в разных местах памяти будут находиться одномерные массивы A=new double *; for (int i=0;i<n;i++) A=new double ; Если я объявлю двумерный массив так, то у меня все элементы этого массива будут находиться в одном участке памяти A1=new...
C++ Вывести имя владельца и название самого тяжелого багажа Всем привет! Стояла задача написать следующую программу: Input: 3 Bob 3 Apple 4 1.5 Limon 3 0.33 Cherry 5 0.4 http://www.cyberforum.ru/cpp-beginners/thread1837161.html
Создание объекта в классе C++
Имеется некий класс, например class Food. Нужно чтобы в главной функции вызывался объект класса Food, который определен в Food.cpp или в Food.h как это сделано с объектов cin или cout. Расскажите как это сделать?
Расположить в начале массива элементы, отличающиеся от максимального не более, чем на 20% C++
Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более, чем на 20%, а потом – все остальные. Если можно ввод-вывод через printf и scanf, буду очень благодарен!
C++ Описать структуру с именем ZNAK, содержащую следующие поля http://www.cyberforum.ru/cpp-beginners/thread1837067.html
Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя; знак Зодиака; день рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по датам дней рождения; вывод на экран информации о человеке, чья фамилия введена с клавиатуры; если...
C++ Обработать целочисленную прямоугольную матрицу согласно условию задачи Дана целочисленная прямоугольная матрица . Написать программу, определяющую величины: количество элементов матрицы, содержащих простые числа; максимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы; средние квадратичные значения четных столбцов и нечетных строк матрицы. Средние квадратичные значения четных столбцов и нечетных строк матрицы, упорядочить по... подробнее

Показать сообщение отдельно
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 58
29.10.2016, 14:20     Правильное арифметическое выражение со скобками
Всем привет, зачастил я тут
В общем стояла такая задача:
Input
N - кол-во скобок (1 <= N <= 100000)
N скобок (сами скобки)
Output
cout << "Yes";, если с данными скобками можно получить правильное арифм. выражение или cout << "No";, если нет.

Пример:
Input:
6
([())]
Output:
No

Input:
24
{[()([]{})[]]({}{{}})}[]
Output:
No

Я набросал такое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <string>
#include <stack>
#include <cstring>
using namespace std;
 
int main()
{
    int n, j, s;
    bool x = true;
    stack<char> sta;
    char arr[100001];
    cin >> n;
    if (n >= 1 && n <= 100000)
    {
        for (j = 0; j < n; j++)
        {
            cin >> arr[j];
        }
        s = strlen(arr);
        for(int i = 0; i < s; ++i)
        {
            if ((arr[i] =='(') || (arr[i] =='{') || (arr[i] =='['))
            {
                sta.push(arr[i]);
            }
            else
            {
                if (sta.size() == 0)
                {
                    x = false;
                }
                char c = sta.top();
                sta.pop();
                if ((c == '(' && arr[i] != ')') || (c == '{' && arr[i] != '}') || (c == '[' && arr[i] != ']'))
                {
                    x = false;
                }
            }
        }
        if(sta.size() != 0)
        {
            x = false;
        }
        if(x == true)
        {
            cout << "Yes";
        }
        else
        {
            cout << "No";
        }
    }
    return 0;
}
Но, так как в задании Time Limit 93/4000/4000/4000 ms, то он вечно на первом же тесте ругается на Time Limit.
Не могли бы вы помочь оптимизировать?

Добавлено через 31 минуту
Цитата Сообщение от Sultik_Zaka Посмотреть сообщение
24
{[()([]{})[]]({}{{}})}[]
Output:
No
Извиняюсь, опечатка

Input:
24
{[()([]{})[]]({}{{}})}[]
Output:
Yes
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru