Я работал над основной проблемой суммы подмножества. Учитывая сумму, скажем, 6, и числа [1,2,3,4,5,6]), мне пришлось найти общее количество комбинаций, которые составили s (для s = 6: [1,5], [2,4], [1,2,3]).Получение комбинаций из memoized алгоритма подмножества сумм?
Я смог решить эту проблему с помощью грубой силы, не смог найти способ ее мемуаровать, поэтому мой код неработоспособный при достаточно больших значениях n.
Я нашел memoized алгоритм here, который работает достаточно хорошо, но он дает мне только количество комбинаций (так что для s = 6 количество комбинаций будет 3) - не сами комбинации. Можно ли как мемуазировать эту проблему (чтобы я мог запускать ее для очень больших значений s) и могли сами выводить сами комбинации?
Этот рекурсивный алгоритм создает дерево всех возможных решений, начиная с общей и вычитая значения, и только возвращение '1' (складывает все ветви), если он вычитает точно в общую сумму (т.е. заканчивается на '0'). Для больших чисел это может затруднить выполнение стандартной глубины рекурсии pythons. – AChampion