min_coins: минимальное число монет на сумму, -1 если размен невозможен
Напишите функцию min_coins(coins: list[int], amount: int) -> int.
Вход. coins — список номиналов (все строго больше нуля, могут повторяться, список может быть пустым), amount — целое неотрицательное. Монет каждого номинала неограниченное количество.
Выход. Минимальное число монет, которыми набирается ровно amount. Если набрать невозможно — вернуть -1.
Поведение на краевых входах.
amount = 0— вернуть0при любых номиналах, в том числе при пустом списке монет.- Пустой список
coinsиamount > 0— вернуть-1. - Сумму нельзя набрать (например
coins = [2],amount = 3) — вернуть-1.
Важно. Жадный выбор самого крупного номинала даёт неверный ответ на некоторых наборах: для coins = [1, 3, 4] и amount = 6 правильный ответ 2 (3 + 3), а не 3 (4 + 1 + 1).
заготовка решения
def min_coins(coins: list[int], amount: int) -> int:
# ваш код
pass