Я пытаюсь написать функцию Python, которая генерирует все комбинации списка чисел, но с определенными ограничениями. Вот чего я хочу добиться:
Создать все возможные подмножества списка.
Убедиться в сумме каждого подмножества. не превышает заданное целевое значение (max_sum).
Например, если я ввожу числа = [2, 3, 5] и max_sum = 6, я хочу, чтобы выходные данные были:
[[ ], [2], [3], [5], [2, 3]]
Вот что я пробовал:
Некоторые подмножества превышают max_sum (например, [2, 3, 5]).
Проблемы:
Некоторые подмножества превышают max_sum (например, [2, 3, 5]).
li>
Я хочу, чтобы пустое подмножество [] было включено, но оно отсутствует.
Что я пробовал:< /p>
Добавление условия для явного включения [] в начале рекурсии, но это не сработало должным образом.
Печать операторов отладки для проверки промежуточных значений, но я не уверен, где логика фильтрации нарушается.
Что не так с моей рекурсивной логикой фильтрации подмножеств на основе max_sum?
Есть ли лучший способ структурировать рекурсию для удовлетворения требований ?
Есть ли какие-либо крайние случаи, которые мне следует учитывать при создании ограниченных комбинаций?
Я пытаюсь написать функцию Python, которая генерирует все комбинации списка чисел, но с определенными ограничениями. Вот чего я хочу добиться: [list] [*]Создать все возможные подмножества списка. [*]Убедиться в сумме каждого подмножества. не превышает заданное целевое значение (max_sum). Например, если я ввожу числа = [2, 3, 5] и max_sum = 6, я хочу, чтобы выходные данные были: [[ ], [2], [3], [5], [2, 3]] Вот что я пробовал: [/list] [code]def generate_combinations(nums, max_sum, current=[], index=0): if sum(current) > max_sum: return [] if index == len(nums): return [current] include = generate_combinations(nums, max_sum, current + [nums[index]], index + 1) exclude = generate_combinations(nums, max_sum, current, index + 1) return include + exclude
numbers = [2, 3, 5] max_sum = 6 result = generate_combinations(numbers, max_sum) print(result) [/code] Однако это возвращает такие результаты: [code][[2], [2, 3], [2, 3, 5], [3], [3, 5], [5]] [/code] Проблемы: [list] [*]Некоторые подмножества превышают max_sum (например, [2, 3, 5]). Проблемы:
Некоторые подмножества превышают max_sum (например, [2, 3, 5]). li> Я хочу, чтобы пустое подмножество [] было включено, но оно отсутствует. [/list] Что я пробовал:< /p> Добавление условия для явного включения [] в начале рекурсии, но это не сработало должным образом. Печать операторов отладки для проверки промежуточных значений, но я не уверен, где логика фильтрации нарушается. Что не так с моей рекурсивной логикой фильтрации подмножеств на основе max_sum? Есть ли лучший способ структурировать рекурсию для удовлетворения требований ? Есть ли какие-либо крайние случаи, которые мне следует учитывать при создании ограниченных комбинаций?
Я пытаюсь построить и заполнить структуру данных, состоящую из множества, но переменных, вложенных словарей в C#. В настоящее время я использую рекурсивную функцию для этого. В этом случае соглашение:
Я пытаюсь построить и заполнить структуру данных, состоящую из множества, но переменных, вложенных словарей в C#. В настоящее время я использую рекурсивную функцию для этого. В этом случае соглашение:
Я пытаюсь построить и заполнить структуру данных, состоящую из множества, но переменных, вложенных словарей в C#. В настоящее время я использую рекурсивную функцию для этого. В этом случае соглашение: