我看到硬币找零问题。通常,输入为 n (要返回的找零),并且可用面额(以分表示的硬币值) v 1
我从哥伦比亚大学读this pdf,但我不知道为什么在幻灯片6处,递归关系中有 +1 :
它代表我们已经使用过的硬币吗?
答案 0 :(得分:0)
假设我的教派看起来像这样:d = [1, 5, 10, 25]
。我们还假设要返回的更改n为26。这意味着:
C[26] = min{C[26 - d[i]] + 1}
可以表示为:
C[26] = min{C[25], C[21], C[16], C[1]} + 1
。
这里的“ +1”只是您需要添加到先前解决的子问题之一(例如C [25],C [21])中以获得C [26]的硬币。
如果我们考虑一个更简单的示例(例如n = 6且面额相同),我们知道重复将是:
C[6] = min{C[6 - d[i]]} + 1
或:
C[6] = min{C[5], C[1]} + 1
我们知道C [5]为1(因为在混合货币中面额为5的最小赚取5分的方法是1),并且类似地,C [1] =1。这里的最小值仅为1,所以1 +1 = 2,赚6美分所需的最小硬币数量为2个硬币。
答案 1 :(得分:0)
C[p]
表示从可用硬币阵列d中构建面额p的最小硬币数量。
因此,要创建这样的总和,您必须选择d[i]
这样的硬币d[i]<p
。
让我们假设您从d中挑选了一个硬币d [i]。这意味着您现在的硬币数是一个。
现在要使总和为p,请为总和p-d[i]
收集更多硬币。
但是您确实已经需要min_coins才能在p-d[i]
中产生总和C[p-d[i]]
。
这意味着使总和为p的一种可能的硬币计数为1+C[p-d[i]]
。
但是在d[i]<p
可能存在多种面额的情况下,那么您必须选择一种最小化结果的面额,这正是您的职能所在。
通过这种方式,您可以了解+1
的作用是我们考虑用来制作总金额p
的第一枚硬币。