Вопрос чистого любопытства: std::placeholders::_1 - это указатель на текущий элемент, который просматривает stable_partition?
если я и так работаю в пространстве имён std, то его можно не указывать
std::
. Но лучше этого не делать. От лишних std:: пальцы не отвалятся, а выстрелить себе в ногу шансов меньше.
Минутка теории. При составлении решения через ДП надо определить 3 вещи:
1) Функция ДП. Назовем ее DP(). Эта функция дает ответ на какую-то задачу, заданную какими-то параметрами. Ее надо описать словами.
Потом мы сводим эту задачу к подзадачам, которое есть та же самая задача, но с другими параметрами. Это и будет рекуррентное соотношение.
Подсказка - в этой задаче параметр будет один - номер цветка/количество цветков от начала.
2) База. Для каких-то параметров надо задать значение функции DP(). Подсказка - тут надо задать DP(0).
3) Ответ. Наша функция может иметь больше параметров, чем есть в изначальной задаче. Поэтому надо указать, какие параметры DP дают ответ. В вашем случае ответом будет DP(n).
Опишите эти элементы и мы с вами сможем понять, почему ваш код делает что-то другое.