Finding all possible combinations of numbers to reach a given sum

前端 未结 30 3747
一个人的身影
一个人的身影 2020-11-21 06:39

How would you go about testing all possible combinations of additions from a given set N of numbers so they add up to a given final number?

A brief exam

30条回答
  •  没有蜡笔的小新
    2020-11-21 06:56

    C# version of @msalvadores code answer

    void Main()
    {
        int[] numbers = {3,9,8,4,5,7,10};
        int target = 15;
        sum_up(new List(numbers.ToList()),target);
    }
    
    static void sum_up_recursive(List numbers, int target, List part)
    {
       int s = 0;
       foreach (int x in part)
       {
           s += x;
       }
       if (s == target)
       {
            Console.WriteLine("sum(" + string.Join(",", part.Select(n => n.ToString()).ToArray()) + ")=" + target);
       }
       if (s >= target)
       {
            return;
       }
       for (int i = 0;i < numbers.Count;i++)
       {
             var remaining = new List();
             int n = numbers[i];
             for (int j = i + 1; j < numbers.Count;j++)
             {
                 remaining.Add(numbers[j]);
             }
             var part_rec = new List(part);
             part_rec.Add(n);
             sum_up_recursive(remaining,target,part_rec);
       }
    }
    static void sum_up(List numbers, int target)
    {
        sum_up_recursive(numbers,target,new List());
    }
    

提交回复
热议问题