algorithm to sum up a list of numbers for all combinations

前端 未结 15 2266
北荒
北荒 2020-12-04 22:34

I have a list of numbers and I want to add up all the different combinations. For example:

  • number as 1,4,7 and 13
  • the output would be:

15条回答
  •  天命终不由人
    2020-12-04 23:13

    Here's how a simple recursive solution would look like, in Java:

    public static void main(String[] args)
    {
        f(new int[] {1,4,7,13}, 0, 0, "{");
    }
    
    static void f(int[] numbers, int index, int sum, String output)
    {
        if (index == numbers.length)
        {
            System.out.println(output + " } = " + sum);
            return;
        }
    
        // include numbers[index]
        f(numbers, index + 1, sum + numbers[index], output + " " + numbers[index]);
    
        // exclude numbers[index]
        f(numbers, index + 1, sum, output);
    }
    

    Output:

    { 1 4 7 13 } = 25
    { 1 4 7 } = 12
    { 1 4 13 } = 18
    { 1 4 } = 5
    { 1 7 13 } = 21
    { 1 7 } = 8
    { 1 13 } = 14
    { 1 } = 1
    { 4 7 13 } = 24
    { 4 7 } = 11
    { 4 13 } = 17
    { 4 } = 4
    { 7 13 } = 20
    { 7 } = 7
    { 13 } = 13
    { } = 0
    

提交回复
热议问题