Скажем, S = 5 и N = 3, решения будут выглядеть так: <0,0,5> <0,1,4> <0,2,3> <0,3,2> <5,0, 0> <2,3,0> <3,2,0> <1,2,2> и т. Д.
В общем случае для решения проблемы можно использовать N вложенных циклов. Запустите N вложенного цикла, внутри них проверьте, не добавляются ли переменные цикла в S.
Если мы не знаем N заранее, мы можем использовать рекурсивное решение. На каждом уровне запускайте цикл, начинающийся с 0 до N, а затем снова вызывайте саму функцию. Когда мы достигнем глубины N, посмотрим, получаются ли полученные числа до S.
Любое другое решение для динамического программирования?