История изменений
Исправление slovazap, (текущая версия) :
Кажется, тут ошибка:
-int two = 1 + help(coins, amount-coins[n], n);
+int two = 1 + help(coins, amount-coins[n], n-1);
А так идея следующая - начиная с последней монетки, мы проверяем что будет если её не брать (тогда задача сводится к самой себе на множестве монеток кроме последней), или если брать (тогда задача сводится к самой себе на множестве монеток кроме последней, суммой уменьшенной на номинал взятой монеты и результатом увеличенным на единицу - это посчитали взятую монету). Из двух результатов выбираем по условию минимальный. В условиях проверяются граничные условия - перебрали все монетки или взяли монеток больше чем нужная сумма).
Исходная версия slovazap, :
Кажется, во-первых, тут ошибка:
-int two = 1 + help(coins, amount-coins[n], n);
+int two = 1 + help(coins, amount-coins[n], n-1);
Во-вторых, тот кто это писал не знает что такое INT_MAX
, потому что зачем отнимать от него единицу?