将2个列表调和为

时间:2018-06-05 03:47:41

标签: subset-sum

我试图有效解决的子集求和问题有一个额外的复杂性。我有两个需要协调的清单。它们都加起来相同。必须使用每个列表中的所有元素。

decimal[] colA = { -13378.36m, -610.98m, -106.80m, -77.67m, -268.49m, -574.58m, -142.85m };
decimal[] colB = {-450.00m, -371.55m, -359.48m, -239.43m, -215.10m, -162.99m, -105.50m, -86.71m, -64.82m, -56.14m, -47.14m, -41.98m, -30.53m, -9930.77m, -2997.59m};

作为优化,只需要第一个解决方案,但它应该是具有最多集合的解决方案(每个集合中元素数量最少)。

到目前为止我的想法:

  1. 获取两个列表的所有组合
  2. 计算每个组合总和
  3. 加入总和上的列表
  4. 获取此结果的所有组合
  5. 按子列表的长度排序(“优化”)
  6. 将组合过滤为仅添加到列表总计
  7. 的组合
  8. 拿第一个
  9. 解决方案是:

    -610.98  -371.55    
             -239.43    
    
    -106.80  -64.82 
             -41.98 
    
    -77.67   -47.14 
             -30.53 
    
    -268.49  -162.99    
             -105.50    
    
    -574.58  -359.48    
             -215.10    
    
    -142.85   -86.71    
              -56.14    
    
    -13378.36  -450.00  
               -9930.77 
               -2997.59 
    

0 个答案:

没有答案