На вход подается словарь со списком вещей для похода в качестве ключа и их массой max_weight в качестве значения.
Определите какие вещи влезут в рюкзак backpack передав его максимальную грузоподъёмность.
В переменную backpack сохраните словарь {предмет:вес} с вещами в рюкзаке.
В переменную result выведите список, содержащий все возможные варианты backpack. Напечатайте переменную result.
*Верните все возможные варианты комплектации рюкзака. Данные: items = {
“ключи”: 0.3,
“кошелек”: 0.2,
“телефон”: 0.5,
“зажигалка”: 0.1
}
max_weight = 1.0
Разделять элементы списка запятой и backspace.
python
items = {
"ключи": 0.3,
"кошелек": 0.2,
"телефон": 0.5,
"зажигалка": 0.1
}
max_weight = 1.0
backpack = {}
result = []
def search(items, max_weight, current_weight, backpack):
if current_weight > max_weight:
return
result.append(backpack.copy())
for item, weight in items.items():
if item not in backpack:
backpack[item] = weight
search(items, max_weight, current_weight + weight, backpack)
del backpack[item]
search(items, max_weight, current_weight=0, backpack={})
print(result)
В данном примере результатом будет список всех возможных комбинаций предметов в рюкзаке, которые не превышают максимальную грузоподъемность:
python
[{'ключи': 0.3, 'кошелек': 0.2, 'телефон': 0.5, 'зажигалка': 0.1}, {'ключи': 0.3, 'кошелек': 0.2, 'телефон': 0.5}, {'ключи': 0.3, 'кошелек': 0.2, 'зажигалка': 0.1}, {'ключи': 0.3, 'кошелек': 0.2}, {'ключи': 0.3, 'телефон': 0.5, 'зажигалка': 0.1}, {'ключи': 0.3, 'телефон': 0.5}, {'ключи': 0.3, 'зажигалка': 0.1}, {'ключи': 0.3}, {'кошелек': 0.2, 'телефон': 0.5, 'зажигалка': 0.1}, {'кошелек': 0.2, 'телефон': 0.5}, {'кошелек': 0.2, 'зажигалка': 0.1}, {'кошелек': 0.2}, {'телефон': 0.5, 'зажигалка': 0.1}, {'телефон': 0.5}, {'зажигалка': 0.1}, {}]
Таким образом, алгоритм находит все возможные варианты комплектации рюкзака и выводит их.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет