计算严格由 k 个元素组成的子集

Count subsets consisting strictly k elements

我想用 k 个子集元素计算 a 的子集,总和为 n。可能的子集元素是通过给定数组 a 定义的,具有不同的正元素。每个子集只能选择一次可能的子集元素。我怎样才能做到这一点?无需遍历所有子集即可实现最优。

示例:

n := 10

k := 3

a := 1,2,6,7,8

=> 1 ( 1,2,7 )

创建大小为 (n+1)*(k+1) 的 table A 或以整数对作为键的映射。

条目 A[i][j] 将包含从 j 个元素

中求和 i 的变体数量

您需要从 k 个元素组成值 n,因此 A[n][k] 可以从 A[n-v][k-1] 构建,其中 v 是给定集合中的任何值。

填完后tableA[n][k]就是答案