Как правило, в такой проблеме вы не рассматриваете одни и те же комбинации с разными перестановками как разные значения, и вы не рассматриваете сложение на 0: см. Разделение .
Тем не менее, в вашем примере вы, кажется, различаете различные перестановки и считаете 0. Я очень уверен, что вы не должны включать 0, потому что это даст вам бесконечно много примеров для любого n. (Кстати, ответ, который вы дали, не включает в себя все значения.) Поэтому я предполагаю, что вы различаете различные перестановки, но не допускаете сегментацию в 0. Это на самом деле значительно облегчает проблему.
Предположим, у вас n = 6.
O O O O O O
^ ^ ^ ^ ^
Подумайте о n - 1 = 5 позициях между шестью объектами выше. Для каждой позиции вы можете решить либо сегментировать в точке, либо нет. Например,
O|O O O|O O
^ ^ ^ ^ ^
является одним из возможных сегментирования. Интерпретируйте это как: 1 + 3 + 2, беря последовательные объекты, не сегментированные '|'. Вы должны быть в состоянии получить все возможные пути таким образом. А именно, для n-1 позиций, сегментируйте это или нет. Для любого n в вашем списке должно быть 2 ^ (n-1) примеров.
например. для n = 3:
1 + 1 + 1, 2 + 1, 1 + 2, 3 => 4 разных способа = 2 ^ (3-1)
для n = 6 у вас должно быть 2 ^ (6-1) = 32 примера, но у вас есть только 17, что сразу говорит о том, что ваш список неполон.
Наконец, обратите внимание, что, как я писал в начале, ваш вопрос отличается от вопроса о разделе, который гораздо более стандартен.