Я просматриваю некоторые старые заметки из моего курса по алгоритмам, и проблемы с динамическим программированием кажутся мне немного сложными. У меня проблема, когда у нас есть неограниченный запас монет, с некоторыми достоинствами 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;
Преобразование этой динамической программы для меня не так легко. Как я могу подойти к этому?