Nuta_nu
@Nuta_nu

Как отобрать из всех вариантов расставления скобок только математически правильные?

У меня задание разместить скобки всеми возможными математически правильными вариантами.
например для варианта ( ){ }[ ] мой код находит :
( ) [ ] { } 
( ) [ { } ] 
( ) { [ ] } 
( ) { } [ ] 
( [ ] ) { } 
( [ ] { } ) 
( [ { ) ] } 
( [ { } ] ) 
( { [ ) } ] 
( { [ ] } ) 
( { } ) [ ] 
( { } [ ] ) 
[ ( ) ] { } 
[ ( ) { } ] 
[ ( { ] ) } 
[ ( { } ) ] 
[ ] ( ) { } 
[ ] ( { } ) 
[ ] { ( ) } 
[ ] { } ( ) 
[ { ( ) } ] 
[ { ( ] } ) 
[ { } ( ) ] 
[ { } ] ( ) 
{ ( ) [ ] } 
{ ( ) } [ ] 
{ ( [ ] ) } 
{ ( [ } ) ] 
{ [ ( ) ] } 
{ [ ( } ] ) 
{ [ ] ( ) } 
{ [ ] } ( ) 
{ } ( ) [ ] 
{ } ( [ ] ) 
{ } [ ( ) ] 
{ } [ ] ( )

но не могу придумать условие отсеявания вариантов типа "{ [ ( } ] )"
Помогите пожалуйста !
Заранее спасибо !
  • Вопрос задан
  • 277 просмотров
Решения вопроса 1
@MiiNiPaa
Классическая проверка скобок при помощи стека же.

Берём стек.
Смотрим первую скобку
    если это открывающая скобка - засовываем в стек, смотрим следующую скобку
    если это закрывающая скобка
        если стек пустой - последовательность некорректна
        если скобка на вершине стека парная текущей - убираем верхний элемент стека, смотрим следующую скобку
        иначе - последовательность некорректна
если после просмотра всех скобок стек не пуст - последовательность некорректна
иначе - последователность верна!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы