Python程序找到用给定硬币获得n卢比的方法

假设我们给出了面额(1、2、5 和 10)的硬币。我们必须找出使用这些支配权可以有多少种方式来安排 n。我们有一个名为 count 的数组,有 4 个元素,其中 count[0] 表示 1 的硬币数量,count[1] 表示 2 的硬币数量,依此类推。

所以,如果输入像 n = 27 count = [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

以上是 Python程序找到用给定硬币获得n卢比的方法 的全部内容, 来源链接: utcz.com/z/317226.html

回到顶部