См. Кнут Искусство компьютерного программирования , Vol. 4, сборник 3 для исчерпывающего ответа.
Краткий ответ: достаточно сгенерировать все полиномиальные выражения в n переменных со степенью точно d. Затем для вашей задачи вы можете либо собрать ответы с градусами ≤d, либо добавить фиктивную переменную «1».
Таким образом, задача генерации всех выражений со степенью точно d представляет собой простую задачу генерации всех упорядоченных разбиений (т. Е. Всех неотрицательных целочисленных решений x 1 + ... + x n = d), и это можно сделать с помощью простого алгоритма возврата. («Поиск в глубину»)