给出有限的自然数序列。确定是否可以将数字分成两个子集,例如两个子集的总数相等。显示此类分布的一种变体。是否有初始集的子集,总计为100。
我只看到问题的强力算法 - 检查所有S(n,2)(第二类斯特林数)组合的总和,并显示一个这样的组合。并检查初始设置的所有可能组合是否相等为100.是否有更优雅的解决方案?
答案 0 :(得分:4)
因为它是NP-Complete Partition Problem,所以没有多项式时间解。但是如果你的总和不够大,那么有一个dp解决方案,其复杂度为O(sum*n)
,其中n是元素的数量。在这里,您可以找到solution。