计算硬币,包括相同序列的排列

时间:2014-03-03 19:22:52

标签: algorithm permutation combinatorics

我找到了一个代码,可以找到使用给定硬币进行更改的可能性: How to count possible combination for coin problem。但是,如果我们考虑相同序列的不同排列,如何计算呢?我是说,例如,金额为12,“4 4 2 2”和“4 2 4 2”应计为2,而不是1。

1 个答案:

答案 0 :(得分:1)

正如您在问题中提到的那样,您可以按照 How to count possible combination for coin problem中的说明计算可能的组合。但是为了将排列包含在你的答案中:

  1. 如果您区分相同数字[1 7 7]和[1 7 7]的排列,例如只计算每个序列(这里[1 7 7])为n! (n =序列中的元素数量)[而不是1]
  2. 否则:将每个序列乘以n!/(m! l! ...)其中m =类型1的相等元素的数量,l是类型2的相等元素的数量,因此上... 。例如对于[a b b c c c]这样的序列,你应该算这个6!/(2!* 3!)[而不是1]

  3. 所以在该链接中使用该算法,我不再重复,但只是将每个组合计为1使用我所说的公式(取决于你想要的情况)。

    !是阶乘。)