假设我们的面额硬币有限(1 卢比、2 卢比、5 卢比和 10 卢比)。我们必须找出有多少种方法可以将它们加起来为 ₹n?我们有一个大小为 4 的数组 count,其中 count[0] 表示 ₹1 的硬币,count[1] 表示 ₹2 的硬币,依此类推。
因此,如果输入类似于 n = 25 count = [7,3,2,2],那么输出将为 9。
让我们看看以下实现以获得更好的理解 -
denom = [1,2,5,10] def solve(n, count): A = [0] * (n + 1) B = list(A) for i in range(min(count[0], n) + 1): A[i] = 1 for i in range(1, 4): for j in range(0, count[i] + 1): for k in range(n + 1 - j *denom[i]): B[k + j * denom[i]] += A[k] for j in range(0, n + 1): A[j] = B[j] B[j] = 0 return A[n] n = 25 count = [7,3,2,2] print(solve(n, count))
25, [7,3,2,2]输出结果
9