У меня проблемы с выяснением моего последнего раздела кода для задачи динамического изменения монет.Я включил код ниже.
Я не могу выяснить последние else
.Должен ли я просто использовать жадный алгоритм в этой точке или я могу рассчитать ответ по значениям уже в таблице?Я работал тяжело, пытаясь понять эту проблему, и я думаю, что я довольно близко.Метод находит минимальное количество монет, необходимое для внесения определенной суммы изменений, путем создания таблицы и использования результатов, хранящихся в таблице, для решения более крупной проблемы без использования рекурсии.
public static int minCoins(int[] denom, int targetAmount){
int denomPosition; // Position in denom[] where the first spot
// is the largest coin and includes every coin
// smaller.
int currentAmount; // The Amount of money that needs to be made
// remainingAmount <= initalAmount
int[][] table = new int[denom.length][targetAmount+1];
for(denomPosition = denom.length-1 ; denomPosition >= 0 ; denomPosition--) {
for(currentAmount = 0 ; currentAmount <= targetAmount ; currentAmount++){
if (denomPosition == denom.length-1){
table[denomPosition][currentAmount] =
currentAmount/denom[denomPosition];
}
else if (currentAmount<denom[denomPosition]){
table[denomPosition][currentAmount] =
table[denomPosition+1][currentAmount];
}
else{
table[denomPosition][currentAmount] =
table[denomPosition+1][currentAmount]-
table[denomPosition][denom[denomPosition]]-1;
}
}
}
return table[0][targetAmount];
}