在 Python 中编写程序,查找使用印度货币面额时,总面值为 n 的 R.s 有多少种方法

在 Python 中编写程序,查找使用印度货币面额时,总面值为 n 的 R.s 有多少种方法

假设我们有面额为 ₹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]
  • A := 长度为(n + 1)的数组,其中所有元素设置为 0
  • B := A 的新列表
  • for i in range 0 to (count[0] 和 n 中最小的值), do
    • A[i] := 1
  • for i in range 1 to 3, do
    • for j in range 0 to count[i], do
      • for k in range 0 to n + 1 – j * denom[i], do
      • B[k + j * denom[i]] := B[k + j * denom[i]] + A[k]
    • for j in range 0 to n, do
      • A[j] := B[j]
      • B[j] := 0
  • 返回 A[n]

示例

让我们看以下实现,以更好地理解:

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程