Все комбинации для получения числа

Решаю задачу, уперся в то, что нужно найти все варианты для получения любого четного числа из набора четных положительных чисел

sum(i) = M, (i = 2, 4, ..., n)

Например, для M = 8, существуют такие наборы

2 2 2 2
2 2 4
2 6
4 4 
8

Может есть какая-то формула?


Ответы (1 шт):

Автор решения: MBo

Проще всего рекурсивно сделать. Подразумевается, что числа чётные, и это проверять не надо.

ПРОЦЕДУРА РАЗЛОЖЕНИЕ(Сумма, Текущий, Набор)
   ЕСЛИ Сумма == 0
        ВЫВОДИТЬ Набор
   ИНАЧЕ
       ДЛЯ X от Текуший до Сумма С_ШАГОМ 2
           РАЗЛОЖЕНИЕ(Сумма- X, X, Набор + [X])
→ Ссылка