Генерация всех деревьев на haskell
От: pigman  
Дата: 10.11.11 00:46
Оценка:
Здравствуйте!

Который день не могу родить решение переборной задачи.
Суть ее такова: есть числа от 1 до 5 (пока что), есть арифметические знаки — "+", "-", "*" и скобочки "(", ")".
Нужно сгенерировать всевозможные комбинации расстановки скобочек и знаков, т.е. к примеру (1 + (2 — (3 * (4 + 5)))) или (1+((2*3)-(4+5))) — да, вариантов здесь множество.

Для пяти цифр, например, это количество K = 14 всех бинарных деревьев разбора выражения умноженные на количество размещений с повторениями трех знаков по четырем местам (между 1 и 5 четыре арифм. операции). Итого, получаем 14*3^4 = 1134.

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

13.11.11 13:04: Перенесено из 'Этюды для программистов'
haskell деревья переборные алгоритмы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.