Ваш вопрос можно перефразировать так:
Учитывая число N, найти все множества [S1, S2, S3 .....], где сумма каждого множества равна N. Размеры множеств определяются числом L.
Сначала давайте рассмотрим случай L=2
. Это означает, что вы можете иметь следующие наборы
(9,1) , (8,2), (7,3) , (6,4) , (5,5)
Я назову это базовым решением, и вы скоро поймете, почему.
Давайте теперь изменим L на 3 и повторим наш ответ:
Итак, давайте рассмотрим число 9. Существует ли такой список L
такой, что sum(L) + 9 = 10
? Очевидный ответ - нет, но здесь интересен не ответ, а сам вопрос. В основном мы запрашиваем набор из 2
элементов, которые можно суммировать как число 1
. Это та же проблема, которая была решена базовым решением.
Поэтому для каждого числа x
в [9,8,7,6,5,4,3,2,1]
вы пытаетесь найти набор [a,b]
такой, что x+a+b = 10
.
Это не полный ответ, но идея в том, что вы видите образец здесь и используете рекурсию для вычисления базового случая, как сделано выше, а затем вычисляете рекурсивный вызов, который завершит ваше решение. Удачи!