c#高效算法找到一个组合,其总和等于两个已知数,在两组数中

时间:2016-12-19 09:26:16

标签: c# algorithm

假设有三组数字

  

一个   1,2

     

乙   3,4

     

Ç   5,6

结果 8,10 结果附近的数字

我想知道哪一个可以等于一个已知的集合数。我们可以发现B + C =结果。实际上我找到了一个单一数字的算法,但我需要的是多个数字。我完全不知道该怎么做。

我想知道是否有任何有效的算法来找出这样的组合。

我尝试使用单个数字下面的代码。但完全不知道怎么做双重数字。

public static IEnumerable<string> GetCombinations(int[] set, int sum, string values) 
{
    for (int i = 0; i < set.Length; i++) 
    {
        int left = sum - set[i];
        string vals = set[i] + "," + values;

        if (left == 0) {
            yield return vals;
        } 
        else {
          int[] possible = set.Take(i).Where(n => n <= sum).ToArray();
          if (possible.Length > 0) {
              foreach (string s in GetCombinations(possible, left, vals)) {
                  yield return s;
              }
          }
        }
    }
}

谢谢大家。原谅我英语不好。

0 个答案:

没有答案