Динамическое программирование - решение об изменении монет

Я рассматриваю некоторые старые заметки из моего курса по алгоритмам, и проблемы с динамическим программированием кажутся мне немного сложными. У меня проблема в том, что у нас неограниченный запас монет с некоторыми номиналами x1, x2, ... xn, и мы хотим внести изменения для некоторого значения X. Мы пытаемся разработать динамическую программу, чтобы решить, может ли изменение для X быть сделано или нет (не минимизируя количество монет, или возвращая, какие монеты, только правда или ложь).

Я немного подумал об этой проблеме, и я вижу рекурсивный способ сделать это, когда это что-то вроде ...

MakeChange(X, x[1..n this is the coins])
    for (int i = 1; i < n; i++)
    {
        if ( (X - x[i] ==0) || MakeChange(X - x[i]) )
            return true;
    }
    return false;

Преобразование этой динамической программы не так легко для меня. Как я могу подойти к этому?

Ответы на вопрос(7)

Ваш ответ на вопрос