Решение задачи "Скобки" с Меньшиков

Без пояснения   Просмотров: 23


Дана последовательность из N круглых, квадратных и фигурных скобок. Выяснить, можно ли добавить в неё цифры и знаки арифметических действий так, чтобы получилось правильное арифметическое выражение.

Код

#include <iostream>
#include <stack>
#include <string>
#include <algorithm>
#include <cstdlib>
 
using namespace std;
 
stack<char> s;
string Open  = "([{";
string Close = ")]}";
bool isOpen(char c)
{
    return Open.find(c) != -1;
}
bool isPair (char o, char c)
{
    int posO = Open.find(o);
    int posC = Close.find(c);
    return posO == posC;
}
void output(int value)
{
    if (value) cout<<"Yes";
    else cout<<"No";
    exit(0);
}
int main()
{
    string str;
    int n;
    cin>>n;
    cin>>str;
    for (int i=0;i<n;i++)
    {
        char c = str[i];
        if (isOpen(c))
            s.push(c);
        else
        {
            if (s.empty())
                output(0);
            else if (isPair(s.top(),c))
                s.pop();
            else
                output(0);
        }
    }
    if (s.empty()) output(1);
    else output(0);
    return 0;
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться