Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2021, 19:51   #1
canadamoscow
Пользователь
 
Аватар для canadamoscow
 
Регистрация: 16.05.2020
Сообщений: 57
По умолчанию Сгенерировать правильные скобочные выражения размера 2N для одно, двух или более видов пар скобок

Сгенерировать правильные скобочные выражения размера 2N для одно, двух или более видов пар скобок

Код:
procedure G(s, p: string; a, b: integer);
begin
  if (a=0) and (b=0) then begin Write(s,' '); Exit end;
  if a>0 then begin 
     G(s+'(', p+')', a-1, b+1);      
     G(s+'[', p+']', a-1, b+1);    {Любую из этих строк                        }
     G(s+'{', p+'}', a-1, b+1);    {можно исключить для уменьшения             }
     G(s+'<', p+'>', a-1, b+1);    {количества видов скобок, или добавить новые}
  end;  
  if b>0 then G(s+p[^1], p[:^1], a, b-1)    // G(s+p[length(p)], copy(p,1,Length(p)-1), a-1, b);
end;

begin  
  var n := 3;   
  G('', '', n, 0) 
end.

Последний раз редактировалось canadamoscow; 10.06.2021 в 23:07.
canadamoscow вне форума Ответить с цитированием
Старый 15.06.2021, 12:17   #2
canadamoscow
Пользователь
 
Аватар для canadamoscow
 
Регистрация: 16.05.2020
Сообщений: 57
По умолчанию

if b>0 then G(s+p[^1], p[:^1], a, b-1) // G(s+p[length(p)], copy(p,1,Length(p)-1), a-1, b);
для упрощения, заменяем на:
Код:
  if b>0 then G(s+p[b], p[:b], a, b-1);    // G(s+p[b], copy(p,1,b-1), a, b-1);

Последний раз редактировалось canadamoscow; 15.06.2021 в 12:19.
canadamoscow вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести все правильные скобочные выражения размера 2N. woodey Помощь студентам 8 09.06.2021 22:55
Паскаль-Составить программу, для вывода всех гласных буквы, которые входят хотя бы в одно слово более двух раз Борис65 Фриланс 5 07.06.2017 12:02
[Pascal] Дан текст со словами из строчных русских букв. Составить программу, для вывода всех гласных буквы, которые входят хотя бы в одно слово более двух раз Борис65 Помощь студентам 9 07.06.2017 11:08
Используя любой из видов циклов, вычислить значения выражения. выражения: Y=ln(x-1)+b Roshen Паскаль, Turbo Pascal, PascalABC.NET 2 18.12.2016 12:18
Построить все правильные скобочные выражения 2N Dr1khem Помощь студентам 6 20.03.2012 16:20