LINUX.ORG.RU

История изменений

Исправление 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, потому что зачем отнимать от него единицу?