Python程序找到用给定硬币获得n卢比的方法
假设我们给出了面额(1、2、5和10)的硬币。我们必须找出使用这些支配权可以有多少种方式来安排n。我们有一个名为count的数组,有4个元素,其中count[0]表示1的硬币数量,count[1]表示2的硬币数量,依此类推。
所以,如果输入像n=27count=[8,4,3,2],那么输出将是18,所以有18种可能的组合,其中一些是
10*2+5*1+2*1=27
10*2+2*3+1*1=27
10*1+5*3+2*1=27
10*1+5*1+4*2+4*1=27
等等...
示例
让我们看下面的实现来更好地理解
denom = [1,2,5,10] def solve(n, count): A = [0 for _ in range(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 = 27 count = [8,4,3,2] print(solve(n, count))
输入
27, [8,4,3,2]输出结果
18