使用Python找出硬币列表和数量的不同硬币总数?

使用Python找出硬币列表和数量的不同硬币总数?

假设我们有一个名为coins的值列表,另一个列表称为相同长度的数量quantities。第i个硬币的值是coins [i],而我们目前有quantities [i]枚第i个硬币。我们必须通过使用这些硬币的非空组来找到不同硬币总值的数量。

因此,如果输入是像coins = [1,2,5] quantities = [1,2,1],则输出将是10,因为我们可以有以下不同的硬币总和 [1] = 1, [2] = 2, [1,2] = 3, [2,2] = 4, [5] = 5, [1,5] = 6, [2,5] = 7, [1,2,5] = 8, [2,2,5] = 9, [1,2,2,5] = 10。

要解决此问题,我们将遵循以下步骤:

定义函数rec()。这将采用i,res

如果i与coins的大小相同,则
   返回
对于k范围从0到quantities [i] +1,执行
   cur:=貌似+k*coins [i]
   将cur插入fres
   rec(i + 1, cur)
从主方法中,执行以下操作:
fres:=一个新集合
rec(0, 0)
返回fres的大小-1

更多Python相关文章,请阅读:Python 教程

示例

class Solution:
   def solve(self, coins, quantities):
      def rec(i, res):
         if i == len(coins):
            return
         for k in range(0, quantities[i] + 1):
            cur = res + k * coins[i]
            fres.add(cur)
            rec(i + 1, cur)

      fres = set()
      rec(0, 0)
      return len(fres) - 1

ob = Solution()
coins = [1, 2, 5]
quantities = [1, 2, 1]
print(ob.solve(coins, quantities))

输入

[1, 2, 5],[1, 2, 1]

输出

10

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程