【问题标题】:In how many ways we can pick K elements from set of n elements to form a number X?有多少种方法可以从 n 个元素的集合中挑选出 K 个元素来组成一个数 X?
【发布时间】:2016-05-12 17:19:38
【问题描述】:

有一点很重要——我们可以选择任意数量的任意元素 次,但总拾取元素应等于 K。

例如 - 如果元素集是 1 2 3 5 并且 K = 3 和 X = 4。

那么答案是 1,因为只有一种方法可以选择 3 个元素加起来为 4,而这 3 个元素是两个 1 和一个 2。(1+1+2 = 4)

算法可以提供很大帮助。 :)

【问题讨论】:

  • 这篇论文可能会给一些方向。 iaeng.org/IJAM/issues_v40/issue_1/IJAM_40_1_01.pdf
  • 修改coin change problem解决方案,考虑币数限制。
  • MBo 你能解释一下吗?
  • 我知道硬币找零问题(使用 dp),但我如何修改它来解决上述问题。
  • 由于您想要可能的解决方案的数量,而不是一个解决方案,您必须尝试所有可能的(有效)组合并计算解决方案的数量。您可以根据标准对其进行修剪,因为您确切地知道要为每个组合选择多少元素,并且可以从元素集中消除不可能的值。动态编程不太可能有帮助,因为您的限制与硬币更换问题相反(硬币更换具有一组不可重复的元素,任何数字总和为 X;您的具有固定数字总和的可重复元素)。

标签: algorithm combinations combinatorics


【解决方案1】:

让我们考虑硬币找零问题的 DP 解决方案。 通常长度为 (Sum+1) 的数组 A 的条目包含整数 - 使每个单元格的值的方法数。

简单修改 - 制作二维数组A[Sum+1][K],因此A[M][P] 将包含使用 P 硬币制作价值 M 的多种方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多