← К задачам
Средне · +3Динамическое программированиеМножества

Можно ли разменять сумму монетами

Дан список номиналов монет coins (каждого номинала можно брать сколько угодно) и целое неотрицательное число amount.

Реализуйте функцию can_make_sum(coins, amount), которая возвращает True, если из этих монет можно набрать ровно сумму amount, и False иначе. Сумму 0 всегда можно набрать (не взяв ни одной монеты). Решение — динамика по достижимым суммам за O(amount * len(coins)).

Формат входа: coins — список положительных номиналов (возможно пустой), amount — целевая сумма.

Формат выхода: True или False.

Примеры:

can_make_sum([1, 2, 5], 11) -> True
can_make_sum([3, 7], 5) -> False
can_make_sum([], 0) -> True
def can_make_sum(coins, amount):
    # ваш код
    pass
Для запуска тестов необходима авторизация.
Поддержать проект