Вам дан целочисленный массив coin, представляющий монеты разного номинала, и целое число, представляющее общую сумму денег.
Верните наименьшее количество монет, необходимое для составления этой суммы. Если эту сумму денег нельзя составить ни одной комбинацией монет, верните -1.
Вы можете предположить, что у вас есть бесконечное количество монет каждого вида.
Пример 1:
Ввод: монеты = [1,2,5], сумма = 11
Вывод: 3
Пояснение: 11 = 5 + 5 + 1
Вот как я пытаюсь решить. Но этот тестовый пример не работает:
[195,265,404,396], сумма 3239.
Будем благодарны за любую помощь.
< div class="snippet-code">
Код: Выделить всё
var coinChange = function(coins, amount) {
let ans = Infinity;
var helper = function(coins, amount, index=0, coinsNeeded = 0){
if(amount === 0){
ans = Math.min(ans, coinsNeeded);
return;
}
if(index >= coins.length) return;
if(coins[index] > amount) return;
if(amount % coins[index] === 0){
ans = Math.min(ans, coinsNeeded + amount / coins[index]);
}
helper(coins, amount-coins[index], index, coinsNeeded+1);
helper(coins, amount, index+1, coinsNeeded);
}
helper(coins, amount);
return ans === Infinity ? -1 : ans;
};
console.log(coinChange([1,2,5], 11))
Подробнее здесь: https://stackoverflow.com/questions/793 ... is-failing