如果我有一个对象,该对象存储的数字数组小于N和权重。这些示例如下:
{1,2,4} -> 10
{1,4} -> 5
{5} -> 4
{3} -> 8
{2} -> 9
因此在这种情况下N为5。我的问题是我想找到权重的最大和,以使数组中的数字仅使用一次。例如,如果我想对与{1,2,4}和{1,4}对应的权重10和5求和,这将是非法的,因为它们都包含1。
愚蠢(错误的)算法会选择{1,2,4},然后选择{3},然后选择{5},得出22。在这种情况下,这不是答案。对此的扩展是,我们可以获得正确的答案26,然后找到下一个最大和,而无需考虑已选择的对象(在这种情况下为10)。
答案 0 :(得分:3)
您所描述的听起来像maximum set packing problem。寻找最优解是NP完全的,但是存在可以找到近似解的算法。有关更多信息,请参见Wikipedia文章中的参考。另外,对于像问题中显示的问题一样小的问题,穷举搜索是微不足道的。