Задача из раздела комбинаторика, но на мой взгляд - это в чистом виде динамическое программирование. Давайте разбираться: Давайте посмотрим на последний ряд дерева. Понятно, что все листья разбиваются на группы по 2 или 3. Научимся считать количество разбиений методом динамического программирования. База динамики: 2, 3 и 4 элемента разбиваются единственным способом.
Шаг динамики, если все ответы до i элементов посчитаны: какой могла быть последняя группа? Всё те же 2 или 3 элемента, то есть ответ для задачи размера i складывается из ответов для подзадач размера i - 2 и i - 3. То есть решение будет почти как в Задача 147. Числа Фибоначчи, только шаги немного другие. Однако в нашей задаче не всё так просто, потому что, зная количество разбиений для нижнего слоя дерева, нельзя посчитать количество разбиений предыдущего слоя, так как количество групп, на которые разбили элементы нижнего слоя может отличаться - значит и количество элементов на предыдущем слое тоже будет отличаться. Это видн