Мне нужен алгоритм для создания всех возможных разделов положительного числа, и я придумал один (отправлен как ответ), но это экспоненциальное время.
Алгоритм должен возвращать все возможные способы, чтобы число могло быть выражено как сумма положительных чисел, меньших или равных себе. Так, например, для числа 5, результат будет выглядеть следующим образом:
- 5
- 4 + 1
- 3 + 2
- 3 + 1 + 1
- 2 + 2 + 1
- 2 + 1 + 1 + 1
- 1 + 1 + 1 + 1 + 1
Итак, мой вопрос: есть ли более эффективный алгоритм для этого?
EDIT: Вопрос был озаглавлен "Суммирование разложения числа", так как я действительно не знал, как это называется. ShreevatsaR указал, что их называли "разделами", поэтому я соответствующим образом редактировал заголовок вопроса.