Алгоритма-то предъявлено не было.
Вот пусть у нас массив из

элементов и заданная сумма

.
Рассматриваем какие значения может принимать 1-ая ячейка. Очевидно что от

до

, т.к. если будет больше, то даже одни лишь единицы в последующих ячейках превысят сумму.
Значит делаем цикл по значениям в первой ячейке от 1 до

, а дальше в каждой итерации этого цикла сводим задачу к такой же на

ячеек (остаток массива) и

минус текущее значение в этой самой первой ячейке. Т.е. запускаем алгоритм на остаток массива просто с текущими лимитами и всё.