В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
lydavika755
lydavika755
03.07.2020 17:08 •  Информатика

Правильная скобочная последовательность Рассмотрим последовательность, состоящую из круглых, квадратных и фигурных скобок. Программа должна определить, является ли данная скобочная последовательность правильной.

Пустая последовательность является правильной. Если A правильная, то последовательности (A), [A], {A} правильные. Если A и B правильные последовательности, то последовательность AB правильная.

Входные данные

В единственной строке записана скобочная последовательность, содержащая не более 100000 скобок.

Выходные данные

Если данная скобочная последовательность правильная, то программа должна вывести строку yes, иначе — строку no.

Примеры
Ввод
Вывод
([])
yes
{)
no

Показать ответ
Ответ:
Eennoottt
Eennoottt
15.10.2020 14:47

#include <iostream>

#include <stack>

using namespace std;

void solve(string &s){

   stack<char> cur;

   for(int i = 0; i < s.size(); i++){

       if(!cur.empty() && ((cur.top() == '(' && s[i] == ')') || (cur.top() == '{' && s[i] == '}') || (cur.top() == '[' && s[i] == ']')))

           cur.pop();

       else cur.push(s[i]);

   }

   if(cur.empty()) cout << "YES";

   else cout << "NO";

}

signed main() {

   string str;

   cin >> str;

   solve(str);

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота