计算严格由 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]
就是答案
我想用 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]
就是答案