【问题标题】:Count integer partitions with k parts when partition elements given给定分区元素时计算具有 k 个部分的整数分区
【发布时间】:2020-06-03 23:11:45
【问题描述】:
我想用k 分区元素计算n 的整数分区。可能的分区元素是通过具有不同元素的给定向量v 定义的。可以多次选择分区元素。我怎样才能做到这一点?无需遍历n 的所有整数分区即可达到最佳效果。
例子:
n := 10
k := 3
v := 1,2,6,7,8
=> 3
【问题讨论】:
标签:
algorithm
math
dynamic-programming
subset-sum
integer-partition
【解决方案1】:
一种方法是让递归按顺序考虑每个元素。
未记忆的 JavaScript:
function f(n, k, v, i=0){
if (k == 0)
return n == 0;
if (i == v.length)
return false;
let total = 0
while (k >= 0 && n >= 0){
total = total + f(n, k, v, i+1);
k = k - 1;
n = n - v[i];
}
return total;
}
console.log(f(10, 3, [1,2,6,7,8]));