Я ищу алгоритм, который находит все способы выразить целое число n как сумму m (неотрицательных) целых чисел. Меня особенно интересуют m = 6 и n⩽20. Какой бы самый быстрый способ найти все возможности (используя компьютер, а не вручную). Если возможно, я хотел бы посмотреть только на комбинации из шести целых чисел, причем порядок не является релевантным (то есть [1, 2, 0, 0, 0, 0] и [2, 1, 0, 0, 0, 0 ] считаются 1 комбинацией).Как найти все способы получения целого числа n в виде суммы m целых чисел (без порядка)?
Самый простой способ - это просто попробовать все перестановки с 6 целыми числами, меньшими или равными 20, и добавить только те, которые суммируют до 20 к нашему результату (с последующим удалением удвоений, если мы не хотим смотреть на упорядочение). Похоже, что это займет очень много времени, так как 20^6 возможностей потребуют достаточно времени, чтобы проверить.
Что было бы более эффективным способом решения этой проблемы?
Подсказка: Как избежать повторений можно легко сделать, если вы создаете их в отсортированном порядке. Если у вас есть m номеров для заполнения, чтобы они суммировались до n, а числа в порядке возрастания, каковы возможности для первого номера? –