так, снова задумался... почему если перебирать
это эквивалентная задача?
Потому, что существует взаимно-однозначное соответствие между представлениями числа
в виде суммы
положительных целых чисел и представлениями числа
в виде суммы
неотрицательных целых чисел.
когда из суммы вычитается количество слагаемых, убираем комбинацию единиц этой суммы (отсюда затем надо прибавть
)
но переборы то все равно делать все (минус один, который убрали), разве нет
Число
-представлений равно числу
-представлений, так что никакие комбинации не убираются и никакие комбинации не добавляются.
откуда следует, что перебираются "только представления с известной суммой"
Пусть сумма элементов текущего представления
равна
и алгоритм преобразует его в представление
с суммой элементов
Пусть
будет индексом самого правого ненулевого элемента массива
и пусть
Тогда алгоритм при
изменит в массиве
только три элемента:
и при
изменит только два элемента:
Из чего следует, что