Не совсем так, ибо, хотя бы насколько я понял, коров всегда нечетное число, а скобок всегда четное. Во-вторых, если уж так рассуждать, то первой открывающей должна соответствовать последняя скобка, иначе будут коровы, не являющиеся потомками первой.
Не пытайтесь в программировании мыслить как математик. Не нужно сводить задачу к уже решенной, как в математике. Так вы не постигните дзена DP. Есть общие приемы, которые стоит усвоить, а далее идет индивидуальная специфика каждой задачи.
Я подсказал вам, что нужно думать аналогично. Насчет отслеживания глубины деревьев - тут как вы организуете динамику. Мне представляется, что ответ будет лежать в
-ой ячейке таблицы динамики, т.е. нужно считать не просто "сколько правильных деревьев я могу построить", а "сколько правильных деревьев глубины
я могу построить". Да, работать это будет медленней, но что-то вы с ограничениями задачи промолчали.