我正在复习一些算法课程的老笔记,动态规划问题对我来说似乎有点棘手。 我有一个问题,我们有无限多个硬币,其面值为x1,x2,... xn,我们想要为某个价值X找零。 我们试图设计一个动态程序来确定是否可以找到X的零钱(不是最小化硬币数量或返回哪些硬币,只需true或false)。
我已经思考了这个问题,并且可以看到一种递归方法可以解决这个问题,大致像是......
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;
我很难将此转换为动态程序。 我应该如何处理?